Refactored route

* Rewrote optional segment match to allow a
  Route '?foo/world/?bar/hello' to match a
  URL '/foo/world/hello'

* Changed routeMatchResult to include key/values for matched
  route parameters, reference to matched route and URL

* Moved complicated instantiation code to factories
  (routeFactory and segmentFactory)

* Moved segments to a separate file since file was too long

* Improved naming and documentation
Refactored route tests

 * More tests
 * Separated tests by file
 * Added some more tests
Refactored router

 * Moved hash handling into hash.js
 * Replaced event routing with a routeTable
 * Moved 'matched' event to route

Still backwards compatible with legacy router/controller
Bug fix: route match should not include trailing optionals

 - candidates must match all URL segments
 - added extra step to check if remaining segments are all optional => return match
Default values

 * Parameters now contains all parameters
 * Unmatched parameters have default values
 * Default values for parameters can be set when creating route
    otherwise undefined is default
Expand routes to URL:s
Limit parameters with constraint

 * Function constraint
 * RegExp constraint
 * Array options constrait
Update path from parameters
Merge branch 'master' into router
Pre-calculate possible optional permutations of route segments
Refactored route for readability
Router clean-up
Router tests and clean-up

* Moved deprecated router to separate file
* Moved tests for deprecated router to separate file
* Added more tests for router
* Added hash.js tests
' General code clean-up
IE7 tests and fixes
Added Recipes sample to demonstrate routing
Recipe sample to show widgets, routing, htmlVanvas
Fix: LINT errors
Merge pull request #1 from foretagsplatsen/router

Router improvements