Wip sub header

This implements #216.

As per suggestion from @matsko, uses native `position: sticky` when possible, otherwise uses a javascript implementation using the new `$materialSticky` service.

A new directive `material-sticky` is also exposed, which uses the `$materialSticky` service.

This pull request also makes the `material-subheader` create a `h2` for accessibility purposes as per @marcysutton's suggestion. Subsequently, it ups the `h2` and `h3` in `material-list-item` to `h3` and `h4` respectively.

Commit messages will be squashed when approved by the team. Figured it'd be easier to see how it was implemented with individual commits.

Would love suggestions from @ajoslin on ideas for testing `$materialSticky` service, or anyone else who has ideas.

Also does anyone have opinion on whether we want to document `material-sticky` directive / `$materialSticky` service for usage on the docs?


The pattern usually used in angular is that the register function just returns a deregister function.

So the API usage would be.

```js
var deregisterSticky = $materialSticky(scope, element);
scope.$on('$destroy', deregisterSticky);
```