Various functionality squashed into one commit including:

 * Implemented the ability to select from multiple cameras if your
   browser supports it (currently only Chrome). Fail gracefully on other
   browsers. Introduced an example showing how this functionality can be used.
 * Setting the canvas to the same dimensions as the video being
   captured from. This is essential because otherwise the QR recognition
   code operates on a squashed version of the image and cannot recognise
   the patterns.
 * Replaced `releaseVideo` with `stop` which releases the video stream and
   also stops the timeout which is capturing to canvas.
 * Fixed some bugs in existing code.

Added a `stop` method.

The previously added `releaseVideo` stopped the video stream but didn't
clear up the timeout which loops the `_captureToCanvas` method.

Removed unnecessary code.

The outside catch does the same as the inside one so we don't need
nested try/catch blocks

No need to set a timeout if we can't get a video stream!

Adding the ability to select a source to capture from.

Use `qr.getVideoSources` to get a list of video sources and pass the
id of the source you are interested in to `prepareVideo`.

Conflicts:
	build/qcode-decoder.js
	build/qcode-decoder.min.js
	src/qcode-decoder.js

Updated the example so that you can pick from multiple cameras
if available on your device.

Also cleaning up a previously running videoCapture if you try to
start another...

Setting the canvas to the videos dimensions.

If you manually set the canvas dimension then there is an issue when
you switch to a camera which has a different aspect ratio (e.g. on
my Nexus 7 both cameras are portrait rather than landscape).

If you don't set the width and height that you are pulling from the
video then only a subsection of the video feed is scanned for QR codes
(see 39e7e0a36f76dbcf85cc37d6d45eb92cb409c059).

This seems to me to be the only way to deal with it although I now
wonder if you need to call prepareCanvas manually at all...

No need to have a public `releaseVideo` function.

The `stop` function should be suitable for all use-cases we can
currently conceive...

Don't die if a browser doesn't support MediaStreamTrack.getSources

It looks like currently Chrome is the only browser to support this
API. Unfortunately client code will need to check the length of the
returned array and behave accordingly...

MediaStreamTrack.getVideoSources is not crossbrowser

We now deal with this and the API is a bit cleaner (not expecting a
`sourceId` when you `prepareVideo` since you can't provide this on
most clients)

The default example doesn't let you choose cameras and introducing
a new example which lets you select camera...

Removed unnecessary debug code