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?


Better to use `angular.bind(context, fn, args)` here. `Function.prototype.bind` doesn't exist on android 2.x. Although we don't actually support android 2, I would rather have a way to gracefully show an error on 2.x devices rather than just have the app completely stop due to a simple error like this one.