Move non-app specific controls to webui/controls

To facilitate re-use in other projects and have a better
separation between app-specific views and general-purpose
controls, move the controls into their own subdir
Ink ripple effect animation improvements

 * Split the animation into two phases, touch and release.
   The touch phase starts on mousedown / touch and renders
   an expanding ripple for up to a max duration, after which
   the ripple stops expanding.

   The release phase happens after mouse up / touch release
   and during this phase the ripple keeps expanding but
   starts to fade out.

   This better matches the Polymer ripple implementation.

 * Put the menu item label on its own layer so that the
   text renders above the ripple effect.

   A more general purpose solution is needed in the ripple
   component itself
Add mini app for testing controls
Improve ripple behavior on touch devices

 * Start the ripple on touch, not on mousedown which occurs
   when the user releases their finger after a tap

 * Render Ripple child elements in their own stacking context
   so that they appear on top of the effect.
Disable selection in item list

Disable selection in the app except for components that
have it explicitly enabled.

This removes the unwanted selection boxes appearing
when long-pressing on the item list.
Improve ripple animation effects

 * Fade the background of the ripple to a lighter
   version of the ripple color when pressed

 * Fade-out ripple on either touchend or mouseup -
   whichever comes first.

 * Adjust the max size of the ripple during the touch
   phase to be consistent with the Polymer paper-ripple
   implementation

 * Put menu control in its own layer for smoother animation
Remove the fixed width for text field components
Fix ripple and menu animations in Chrome extension

In the Chrome extension, requestAnimationFrame() is called from the
invisible background window and doesn't get fired as expected.

Work around this by providing a requestAnimationFrame() wrapper
which uses setTimeout() in Chrome extensions. This implementation
can also be used in non-browser contexts.
Make it more obvious what is searched when item matches are found

The item search box searches for all items, regardless of whether
the list is showing all items or just matching items for the current
URL.

Alter the placeholder text to make this clearer.
Make ripple animation more consistent with Google's Polymer implementation

Make the ripple's radius expand according to an ease-out function,
using the same parameters as Polymer's <paper-ripple> implementation.
Only show 'Reveal' action for selected password fields

Make behavior consistent with the 'Copy' action only being
shown when the field is selected.
Fix item URL not appearing if URL did not have a scheme

Normalize the item URL entered by the user for use
in the link displayed below the item title.
Add a button to generate random values for password fields