code: function get(obj, path, sep) {
      if (!is.obj(obj))  return undefined;
      if (!is.nonEmptyStr(path))  return obj;
      if (!is.nonEmptyStr(sep))  sep = defaultSepChar;
  
      // create new path and remove leading and trailing sep chars
      var properties = filter(path.split(sep), function(elem) {
          return is.str(elem) && elem.length;
      });
  
      var currVal = obj;
      for (var i=0; i<properties.length; i++) {
          var currPropertyName = properties[i];
          if (!currVal.hasOwnProperty(currPropertyName)) {
              return undefined;
          }
          currVal = currVal[currPropertyName];
      }
  
      return currVal;
  }
docs: Given an object and a char-separated path, return the value at the path
  or false if no such value can be found.
  @param {Object} obj An object upon which to apply the path.
  @param {String} path The path to traverse the object, e.g 'a.b.c'
  @param {String} [sep] The separator char to delimit the properties in the path. Optional. If not specified, '.' is assumed.
  @return {Undefined|Any} returns the value, if found or undefined otherwise.