Refactor app-drawer to use web-animations

Quick summary of how this works:
* The opacity/transform animations are bundled into a group and then managed by the `DrawerController`.
* `DrawerController` wraps the composed animation in a group so that it can control direction and easing independently.
* The animation is set up to have a duration of '1' to simplify calculations.

The behavior of the drawer is then broken down into these operations:

`resumeAnimation(direction)`
* Begins opening/closing the drawer from its current position over 400ms with the specified easing.
* This is achieved by slicing the animation such that it starts at the current position and finishes at one end.
* The direction is specified on the container and the playback rate on the player is set appropriately for 400ms of animation.

`fling(velocity)`
* Starts a `resumeAnimation` in the appropriate direction.
* Sets linear easing and pauses the player.

`prepareForScrubbing()`
* Sets up a linear easing and pauses the player.

scrubbing is handled in `onTouchMove` by adjusting the player's `currentTime` relative to the delta.