feat(subheader): add subheader component

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 have been squashed

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?

Can we make a separate function `findTargetElement()` that returns a new targetElementIndex, instead of modifying targetElementIndex inside here? Easier to read:

```js
targetElementIndex = findTargetElement();
```