docs(sidenav): updates $media to lock left sidenav on larger displays

Closes #948.
feat(theming): use $mdThemingProvider

BREAKING CHANGE: Themes are no longer defined by linked CSS files.

Themes are now defined through Javascript only. A 'theme template' is
bundled into angular-material.js, and then Javascript is used to
generate theme css for every theme the user defines.

The `default` theme is still shipped with angular-material.

If you used another theme (for example, the `purple` theme), change your code from this:

```html
<link rel="stylesheet" href="/themes/purple-theme.css">
<div md-theme="purple">
  <md-button class="md-primary">Purple</md-button>
</div>
```

To this:

```js
var app = angular.module('myApp', ['ngMaterial']);
app.config(function($mdThemingProvider) {
  //will use the colors from default theme for any color not defined.
  $mdThemingProvider.theme('purple')
    .primaryColor('purple');
});
```
```html
<div md-theme="purple">
  <md-button class="md-primary">Purple</md-button>
</div>
```

For more information, read the updated [theming
documentation](https://material.angularjs.org/#/Theming/01_introduction).
fix(button): fix hover on flat buttons
amend(): fix test problems for themes, fix firefox problems
fix(mdToast): Puts index above dialog

Closes #903
refactor(tabs): adds support for non-fixed tabs

Closes #825.
Closes #460.
Closes #921.

refactor(tabs): added handling for when the tabs are initially hidden

refactor(tabs): switched to 0-based page indexes

refactor(tabs): wires up pagination to use $mdMedia rather than a hard-coded pixel size

In order to accomplish this, I had to move $mdMedia into its own file in the 'material.core' scope.

refactor(tabs): changes per Andrew's feedback

Renames `stretchTabs()` to `shouldStretchTabs()`
Uses `getElementsByTagName()` in place of `querySelectorAll()`
Uses cached version of `angular.element(tabs)`
Adds descriptive comment for `data.page` calculation

refactor(tabs): moves tabs definition to top of `postLink` method
feat(tabs): adds default transitions for tab content

By default, now tab content will animate in from whichever direction the
ink-bar is moving.  These animations can be overridden through the
following classes:

When a tab is selected, the following classes are added in order:
1. `md-transition-rtl`: flags the animation as right-to-left
2. `ng-animate`: added at the start of all animations
3. `ng-hide-remove`
4. `ng-hide-remove-active`

When a tab is deselected, the following classes are added in order:
1. `md-transition-rtl`: flags the animation as right-to-left
2. `ng-animate`: added at the start of all animations
3. `ng-hide-add`
4. `ng-hide-add-active`