Added directory and site routes

New routes, separated model and begun to look at possible plugins
Added notion of master and slave repositories

Separates model reads and writes.

The master repository will be updatable (by the file system watcher) and
publish events. The master repository does not allow direct reads, is
updated on it's own event loop and therefore doesn't require locking
semantics.

Any number of slave repositories can be setup, they can be updated in
response to events and allow consumers direct read-only access to the
model.
Fixed minimal tests for SlaveRepository

Fixed tests and refactored as required. Longer term I'd prefer to have a
single thread safe asycn repository implementation but this will do for
now
Solved problems caused by out of order events

It seems that slow event handlers were causing events to be handled out
of order. Not sure why as I thought the EventLoopScheduler would handle
that. Solved for now, will investigate further.
Changed to async and removed slave repositories