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
refactor(tabs): adds support for non-fixed tabs

Closes #825.
Closes #460.

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