Fix for Keychain plugin

- Fix typo in `removeForKey` method
- Use one instance of cordova `Keychain` plugin
- Remove unnecessary function wrappers for promise callbacks
add httpd plugin to embed nano web server into cordova app
added plugin videoCapturePlus
include videoCapturePlus in modules
Merge pull request #457 from jonlil/master

Added videoCapturePlus plugin that allows for different recording qualities
Merge pull request #448 from khashayar/fix/keychain

fix(plugin:keychain): typo in removeForKey, one instance of cordova Keychain plugin
Merge pull request #453 from floatinghotpot/add_httpd_plugin

add httpd plugin to embed nano web server into cordova app
Adds support for PDF417 barcode scanner

https://github.com/PDF417/pdf417-phonegaptop
$cordovaCamera mock and test: convert tabs to spaces
Reformatting of camera and mock prior to adding new features
mock $cordovaCamera renamed to ngCordovaMocks.$cordovaCamera

Currently each cordova plugin wrapper and corresponding mock are named
the same. This means that both can't be included in a project at the
same time because there is no namespacing of components from different
modules. This forces a developer to have preprocessor step in their
build pipeline and doesn't work well in scenarios when a developer is
designing a responsive interface with new tools such as browsersync
http://www.browsersync.io/ .

The issue is also talked about here:

http://stackoverflow.com/questions/15342657/how-to-reference-values-with-the-same-name-from-different-modules

The suggestion given in the answer seems to be popular with many
developers:

> your best option is to prefix your values
> (and other providers) with a module name

This commit demonstrates what that suggestion looks like when
implemented. Subsequent commits will show how the
ngCordovaMocks.$cordovaCamera and other mocks can now easily be used
without name collisions.
Adds $cordovaCameraConstants and ngCordovaMocks.$cordovaCameraConstants

The `$cordovaCamera` plugin has a number of constants that are exposed
on `window` if cordova.js and cordova_plugins.js are included. When not
running on a device or in test and exception will be thrown if they are
accessed. CameraConstants.js is where constants are defined. The mock
contains a copy of the contents of CameraConstants.js.

ngCordovaMocks.$cordovaCameraConstants is injected in the test as
$cordovaCameraConstants. The same could be done in a `config()` of
a module if the application is running outside of a device

In the camera plugin test a `beforeEach()` is added the injects
`$window.Camera` with `ngCordovaMocks.$cordovaCameraConstants` in
case a test is added in the future that needs the value of one of
the constants
Adds $cordovaScreenOrientation to query the current screen orientation

The screen orientation is described in terms if iPhone device
orientation. It is rumored that some phones invert landscape left and
right. However in limited device testing all android devices
exhibited the same orientation as the iPhone
$cordovaScreenOrientation: can now build a boxed orientation by name

Given an orientation name from `$cordovaScreenOrientationConstants` it
is helpful to be able to get boxed object version of the name like you
already can for the current $window.orientation value. The
`$cordovaScreenOrientation` has been slightly refactored to allow for this
use case. It creates a new instance of boxed orientation each time the
`$cordovaScreenOrientation.get([orientationName])` is called

When the boxed orientation is a wrapper for `$window.orientation`
care is taken not assign the value `$window.orientation` to a local
variable. This ensures that the boxed orientation always gives the
correct answer if cached and reused.
Adds $cordovaSimpleCamera: prepends data uri format

Data URI format is:

data:[<MIME-type>][;charset=<encoding>][;base64],<data>

The format is prepended if the DestinationType option is DATA_URL.
Charset is not a supported option for image data so it is excluded.
$cordovaSimpleCamera: Adds orientation attribute to result if data url

If the resulting image DestinationType is DATA_URL then the orientation
will be added to the output format as a media type parameter as
defined in http://www.ietf.org/rfc/rfc2045.txt.

Additionally per http://en.wikipedia.org/wiki/Data_URI_scheme the
`base64` encoding parameter is expected to be last by certain browsers.
The test for parameter order has been updated to test that `orientation`
parameter comes before `base64`
$cordovaSimpleCamera: adds orientation attribute to camera result
adds correct-image-orientation directive, 2d css transform correction

The directive looks for a DataURL on the element on which it is placed
that is encoded with orientation information as a media type
parameter. It applies css classes to rotate the image and correct
the orientation when photos are taken outside the natural camera
orientation