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'm not sure `_.has(visibility, 'methodName')` is necessary. Even if `visibility.methodName` isn't defined, it will just be passed in to hasMethod as undefined (i.e. it won't throw an error at that point). Then in the `hasMethod` function, it should return false b/c it won't find `undefined` as a method. Now, that last part I'm not entirely sure of, so maybe `hasMethod` needs to do a quick check that a method name was actually passed in.