enhance(componentRegistry): refactor to distinct file

Improve recovery when component id is invalid.
refactor(icon): rename icon css file.
fix(sidenav): Fix tests and typo
refactor(sidenav): adds transition for `md-locked-open` changes

Closes #789.
refactor(sidenav): fixes animation issue in previous commit
fix(radioButton): arrowkey navigation with disabled buttons

Closes #1040.
update(build): build-demo no longer requires prefixes

'material.component.' prefixes are no longer required with 'gulp build-demo -m slider'
update(utils): refactor iterator

Uses angular.config() to decorate and inject iterator into $mdUtils
Also update iterator::previous() to use limit parameter
fix(mdUtil): remove/delete cacheFactory keys when clearing/destroying cache

`mdUtil`'s custom `cacheFactory` factory, adds/removes keys when
putting/removing a single key, but leaves `keys` untouched when calling
`removeAll()` or `destroy()`. As a result, the following problems arise:

- Keys of destroyed caches continue to take up memory.
- The `keys()` method return incorrect results after calling `removeAll()`
  (i.e. it continues to return the old keys, although they are not present
  in the cache any more).

This commit fixes these issues, by overriding the `removeAll` and
`destroy` methods as well.
fix(mdMedia): avoid unnecessary digest and make changes apply quicker

Previously, the `updateAll()` method relied on `$timeout` for scheduling a
digest. This made the possible changes apply after the next rendering and
could possibly lead to extra digests.

This commit, replaces the call to `$timeout` with a call to `$evalAsync()`,
which avoids an extra digest if one is already in progress and also applies
the changes before the next rendering.