Support `devicePixelRatio` !== 1. Fixes resize issues on Retina displays.

@allisoncorey @eric79 @BrettASwift, this keeps the canvas' CSS size correct on high-resolution displays that  have multiple physical pixels per CSS pixel. It also sizes the canvas internally for physical pixels to enable high-resolution rendering.

Like a TARDIS, a canvas can be bigger on the inside than the outside. (It can be smaller too, but since that isn't like a TARDIS, who cares.) Think of it like a 1024x768 PNG that's sized to 256x192 on screen.

`clientWidth`/`clientHeight` is the display size, or CSS size. It's the number of [nominal 96 dpi](http://www.w3.org/TR/css3-values/#absolute-lengths) pixels that the element takes up on screen. These dimensions are the same for equal screen areas regardless of the display density. Device pixels don't appear in CSS calculations.

`width`/`height` is the size of the internal coordinate system that the canvas provides. If you were doing move-to, line-to -like operations, you could address `0..width-1`, `0..height-1`. The browser scales the resulting image to fit the display area.

A high-density display will have more than one device pixel per nominal pixel. For example, an iPad is 2x in each dimension. `devicePixelRatio` reports this ratio. To take advantage of high-density displays, the canvas should be scaled up by `devicePixelRatio` so that there's one canvas pixel per device pixel. When the browser scales the canvas to fit the CSS area, each canvas pixel drops into one device pixel.