isTerminal = function(o) {
  return typeof o !== 'object' || o instanceof Date || o === null;
}
We won't worry about edge cases like new String('x') or new Boolean(true).
Functions and Dates are considered terminals, and arrays are not.
@param {*} o The item/object/value to test.
@return {boolean} true iff the argument is a terminal.