(This continues from the previous commit where I had to deliver changes
in a hurry and did not document them.)

Implement Folder Management
---------------------------
The web app needs a page where the user can view all the junit report
folders that are under the control of the server's FileWatcher. Any
changes to the file system (ie via a script copying new test results
into the watched folder tree) should be immediately visible in the web
app. Next step will be to implement upload directly from the web app.
The main parts od this change are:

1. Introduction of Folder Manager
------------------------------
We are exposing new REST API that will provide a web socket streaming
Folder events to the client. 

FolderManager:
- New class that wraps IFolderData and ImportFileWatcher to provide a
unified stream of Folder data from both sources. It is expected that the
responsibilities of this class will expand to manage file upload.
- In addition to managing the Folder event stream, FolderManager is also
responsible for updating Folder state in the DB based on events emitted
by the file watcher.

Global / build.sbt:
- Previously added this class for 2 reasons:
- 1. Utilise the onStart hook to initialise and run the FolderManager
when the server starts up.
- 2. Introduced google Guice for DI and used it to inject the
FolderManager into the Application controller class.

Application / routes:
- Added GET on /folders to provide folder event stream via WebSocket to
clients.

IFolderData / JdbcFolderData:
- Added updateFolder API to support FolderManager's need to update
Folder state based on Filewatcher events.
- Previous commit tweaked the synchronisation around createFolder to
make it more efficient.

FolderCacheLoader:
- Previously added a loadAll() method that would laod and return all
Folders from the DB without requiring or processing keys. This is used
to get the initial Folder states loaded from the DB.

Folder:
- Added update methods to allow changes to the folder state. These
methods return new copies of the Folder to preserve immutability.

FolderEvents / FolderEvent & sub-classes [FolderCreated. FolderDeleted,
FolderRenamed]:
- These classes model changes to Folders in the watch folder. We are
currently only publishing and consuming FolderCreated.

ImportFileWatcher:
- Updated to emit FolderCretaed when a new Folder is detected in the
WatchFolder tree.




2. Consuming Folder Manager Event Stream on Client
--------------------------------------------------
folderServices.js:
- Encapsulates HTTP Request on /folders service and invokes callback for
data coming in from the web socket connection.

manageCtrl.js
- provides scope and API for client folder functionality.
- current API is getFolderData which wires up requests for a folder feed
to call backs provided by calling code.

manageFoldersDirective.js / manageFoldersTemplate.html:
- Main view for folder feed. Currently renders Folder feed in a table.