Deferred object as a title

- Support for deferred object in titles. Tested with jQuery, but,
theoretically, should work with any Promises/A compatible object.
recreate deferred title after resolution
Refactoring

- Separate methods added to set title: one for regular use case,
another for promised. Used "_" name convention to avoid potential
conflicts and to show, that methods are private.
- More elegant document.title assignment, made by chaining inline if
statements
- Triggering "change:title" event with route name and a new title as an
arguments. Useful for testing.
- Do not depend on jQuery anymore, but if a object with 'promise'
method will be passed, it will throw an error if no "jQuery.Deferred"
found for now.
- Throw an error if no title found and no default title provided.
Throw new Error instead of string.
Merge pull request #7 from romanenko/deferred-support

Deferred object support.