Remove "px" from zero values in CSS

A zero is interpreted the same no matter the units. Saves space.
Popup: Break up placement function for reuse.
Popup arrow: Extension for making popups with arrows.
Demos: Popup arrow: New demo
Popup arrow: Use scoping instead of adding l,t,r,b classes to inner arrow elements.
Demos: Popup arrow: Create enormous anchor so clicks will work in iOS 5.
Popup arrow: Stretch the background to the width resp. height of the popup to replicate the gradient inside the arrow.
Popup arrow: Simplifying some more
buttonMarkup: Remove duplicated code
Popup arrow: Theme css: Added some comments explaining the size of the arrow vs. the size of the container
Popup arrow: CSS: Save a few more bytes by replacing 0px with 0 and getting rid of arrow top/left coords, which are set programmatically anyway.

Inspired by #5594.
Popup arrow: CSS: Specify reverse transformation nicely, as a sequence of transforms, rather than as a matrix.
Popup: Declared variable twice - caught by the linter.
Popup arrow: De-linting
Popup arrow: Hack in support for IE
Popup arrow: Do not apply IE hack if box shadow is supported (pointing to IE9)
Popup arrow: Separate filter and transform, because they combine disastrously on IE9/desktop
Popup arrow: If a given side is too short to display an arrow, then do not attempt to place the arrow along that side. If no sides can have an arrow, display no arrow, but behave as a regular popup.
navigate event depends on hashchange for older browsers
use correct dep declaration for hashchange