feat(childVisibility): System for registering nav visibility methods

This PR is against our `470-external-nav` branch

Closes #522 

This lets us register methods to be used for `visibility` and
`childVisibility` values in nav menus. Because we're now loading some
nav menus from JSON, we can't put arbitrary functions in anymore.

Now we can register new methods with `rxVisibility`, and reference them
in the nav as:

```
visibility: { methodName: 'someRegisteredName', args: { foo: 'bar' } }
```
I also don't think this check is necessary. If `visibility.args` is undefined, `merge` just returns the original `locals` object.

For example: 
```
var x = { y: 0 };
_.merge({ local: 'test' }, x.z); // returns Object {local: "test"}
```

Now, this does mean that `merge` will be run unnecessarily when there are no args, so it may be best to just leave this in.