Fixed TypeError when trigger is false which results in routes being undefined

Fixed *Uncaught TypeError: Cannot read property 'length' of undefined* when trigger is false which results in routes being undefined.

## The Problem
When you pass in options to *Route.navigate({trigger: false})* setting trigger to false, routes is never defined and the TypeError is thrown.

## Relavent Code
Only sets _routes_ if _options.trigger_ is true.
```
routes = @matchRoutes(@path, options) if options.trigger
```

Produces *TypeError* when _options.trigger_ is false because _routes_ is undefined.
```
unless routes.length
```

## Other Questions/Issues/Changes to be aware of

Looking at the current code it appears that *@trigger('navigate', @path)* is always triggered. I'm not sure if that is intended or not. This Pull Request only calls *@trigger('navigate', @path)* if _options.trigger_ is true. Please advise.

The statement *return if options.shim* has been moved from before the _redirect_ block to after the _redirect_ block. Previously the redirect block would never get called if _options.shim_ was true. I'm not sure if this was intentional or desired. Please advise.

NOTE: Jasmine tests are still passing with the changes in this Pull Request.