Add side floating navigation to the content (about) pages

This PR implements the design for https://bugs.caret.cam.ac.uk/browse/PAVO-111. A side navigation is added to each content page which scrolls with the page to stay in view.
I think all of my comments make sense for the sake of consistency with the rest of the code base. We should not be implementing each his own interpretation of what is a good way to do things but a general approach that everyone agrees on. When a way of thinking/implementing is a better way of doing things a ticket can be created to overhaul all parts that should be changed. I hope that makes sense.

> On 20 Jun 2014, at 15:44, ucamhal <notifications@github.com> wrote:
> 
> In node_modules/oae-avocet/avocetfloatingnavigation/js/avocetfloatingnavigation.js:
> 
> > +        var $navigationWrapper = $('.avocetfloatingnavigation-wrapper', $rootel);
> > +
> > +        var scrollElementSelector = $rootel.data('scroll-element');
> > +        var $scrollElement = $($rootel.data('scroll-element'));
> > +        var navEntries = $rootel.data('nav-entries');
> > +        var navTitle = $rootel.data('nav-title');
> > +
> > +        if ($scrollElement.length !== 1) {
> > +            throw new Error('Expected 1 scroll element to be selected but got: ' + $scrollElement.length + ', data-scroll-element: ' + scrollElementSelector);
> > +        }
> > +
> > +        if (!(navEntries instanceof Array)) {
> > +            throw new Error('expected an Array for data-nav-entries, got: ' + navEntries);
> > +        }
> > +
> > +        if (!_.isString(navTitle) && navTitle) {
> IMO It's a public API and it's inappropriate for a public API to accept erroneous input without reporting errors. Little annoys me more than things silently failing. Using these kind of checks consistently makes debugging a whole load load easier.
> 
> —
> Reply to this email directly or view it on GitHub.