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?

Sticky wraps the elements with a div with static height, which it uses to keep track of the "target position" (ie. where it would be w/o scroll). The `children(0)` is the actual thing made sticky, and might have position absolute applied to it.

However, when this function is running, none of them will be sticky, so it is likely not necessary. Remnants from an older version where `scanElements` ran more than once... will remove