Session management and core data refactor

Fixes #229

- Sessions are now managed through a single manager defined as `c.sessions`
- The core data and router are now session-specific and are defined per session
    - The global data object and router (`c.data` and `c.router`) have been removed
- For convenience, a reference to the active session and it's router are defined on the cilantro object at `c.session` and `c.router`, respectively
- Views no longer reference the `c.data` object (since it no longer exists) and must have it's data explicitly passed into the view options on construction. Views are responsible for taking and passing down data for it's subviews
    - A convention emerged as a result of this which involves defining a local `data` object which contains references to each data option that must exist. [See an example](https://github.com/cbmi/cilantro/blob/34604027187005d70873378eb2c48e477abb48a0/src/coffee/cilantro/ui/workflows/results.coffee#L102-L115)
- Changes have been made to simplify the configuration options
    - the `ui.main` has been moved to just `main`
    - the `routes` option has been removed since it is not longer relevant
    - the `defaults` option has been removed since it was not being used correctly and persisted context and view session objects make having defaults unnecessary.
- To make integration with projects easier, a new `cilantro/main` module has been added which contains the default workflows for Cilantro