feat($bin): use command like arguments for run mode

Instead of using dash option to define the mode into which running
Spectacular (running tests, starting a server, running tests in
phantomjs) the binary now use command line arguments.
Options can be passed before or after the command argument.

The --server and --phantomjs are still available but are now deprecated.

BREAKING CHANGE: running the spectacular bin without a command will only
  display the help message

  To run the test you must you the `test` command such :

    `spectacular test`
fix($core): retrieve nextTick or setImmediate from window if available

As these methods were retrieved from the process object they couldn't be
found in a browser, the setTimeout fallback was then systematically used.
feat($core): add a deprecated method to offer proper deprecation messages

The `spectacular.deprecated` method print a warning that contains both
the specified message and the context in which the deprecated method was
called.
feat(factories): add factory build hooks

Using the `after` method it's now possible to execute a block
after an object was created.

The hooks mechanism is provided by the Hookable mixin that rely on
HasAncestors and AncestorsProperties mixins.
fix(phantomjs): fix error raised in deprecated when stack don't exist
feat($bin): add a --phantom-bin option to pass the path to phantomjs