Alias and config

This PR adds support for user configuration and aliases.

The `shell:config:init` command creates a default configuration for the user:

````
PHPCR> shell:config:init
````

Which creates `~/.phpcrsh/aliases.yml`

This YAML file contains a list of command alises, which can be listed:

````
PHPCR > shell:alias:list
+------------+----------------------------------+
| Alias      | Command                          |
+------------+----------------------------------+
| aliases    | shell:alias:list                 |
| use        | workspace:use                    |
| workspaces | workspace:list                   |
| select     | query:select                     |
| cd         | shell:path:change {arg1}         |
| rm         | node:remove {arg1}               |
| mv         | node:move {arg1} {arg2}          |
| pwd        | shell:path:show                  |
| exit       | shell:exit                       |
| ls         | node:list {arg1}                 |
| sl         | node:clone {arg1} {arg2}         |
| cp         | node:copy {arg1} {arg2}          |
| cat        | node:property:show {arg1}        |
| vim        | node:property:edit {arg1} {arg2} |
| nano       | node:property:edit {arg1} {arg2} |
| man        | help {arg1}                      |
| checkin    | version:checkin {arg1}           |
| checkout   | version:checkout {arg1}          |
| checkpoint | version:checkpoint {arg1}        |
| lsversion  | version:history {arg1}           |
+------------+----------------------------------+
````

This PR also cleans up a few things and adds an Event Dispatcher to the `ShellApplication`