fix updates from socket.io for jobs and resultsets

**READY FOR MERGE**

**resultset ranges**
* add support for revision and date ranges for resultsets
* added function ``isInResultSetRange`` to detect if a ``job`` or ``resultset`` is within the original date or revision range specified when the repo was loaded.  Used during socket.io event updates.  Required metadata in the ``/resultsets/`` endpoint.
* adjustments for the new ``/resultset/`` return format in the complimentary service PR.

**socket.io updates**
* add ability for the ui to filter resultsets on a range of revisions or dates
* fix bug where background cached repo resultset lists don't get updated properly via socket.io
* fixed bug where we were broadcasting ``jobsLoaded`` events even when it was for the background repo (which was throwing JS errors)
* when selecting a watched repo that may already be cached, be sure that the ``locationSearch`` i.e. ``query string`` parameters match.  If not, then re-fetch the repo clean (with no range limitations)
* fixed bug in generation of ``platformKey`` in ``ThResultSetModel`` when it was adding new jobs via socket.io events in ``getOrCreatePlatform``.

**unit tests**
* Unit tests now fixed and running.  they were falsely passing before because ``Karma`` couldn't be installed.  Sucks that showed a false positive.
* several new unit tests for getting resultset and job updates from socket.io.  Test both foreground and background repo
* removed a bunch of unused ``mock`` test files for the unit tests
* moved ``package.json`` to the root, so that it would be found by ``Travis`` and ``Karma``

**other**
* add error notification if we can't load resultsets.
* fixed object typo in ``clonejobs.js`` where ``lastObjSelected`` should have been ``lastJobSelected``