Custom avatars

This pull request adds support for custom avatars on the user documents.

A new option has been added, `customAvatarProperty`, which if set defines a path onto the user object (e.g. 'profile.avatar') which may contain the source URL (or data URI) for the user's custom avatar. If this property is set for a given user then this custom avatar is displayed. If it isn't then the system falls back to the avatar search method. 

Note that no attempt has been made to provide an upload mechanism. Instead, this simple approach allows us to pick from a variety of third-part providers for the upload/crop interface, and to simply add the resulting ULR/URI to the user object. For this purpose, I heartily recommend cropit (http://scottcheng.github.io/cropit/), which is very easy to integrate and style.

Another small change is that the `emailHashProperty` may now also take a path (eg. profile.hash) rather than just a top level name.

P.S. Please excuse the plethora of commits involved, I got into a mess trying to isolate the modifcations from my own customisations. Hopefully you can rebase and compress the changes as a single commit.

By the way this function is difficult to understand, I'll would re-write it like this:

```js
getObjectWithPath = function (obj, path, def) {
  var stack = path.split('.');
  var nextField;
  while (nextField = stack.shift()) {
    if (_.has(obj, nextField))
      obj = obj[nextField];
    else
      return def;
  }
  return obj;
};
```

(assuming we keep the same API)