Bring dwt2 into agreement with dwtn docstring

The behaviour and variable naming of dwt2 did not match what was
described in the docstring of dwtn. This brings the two into agreement
(renames LH/HL and corrects V/H respective to 'ad' naming scheme).
Add inverse n-dimesional dwt.

Adds inverse n-dimensional dwt. Smoke tests to ensure it behaves as
(i)dwt2 for 2D case and can reconstruct data. Note resulting dimensions
will always be even, I cannot see any other way of doing it.
STY: Fix style problems pointed out by rgommers

tabs -> spaces, proper formatting of docstrings, formatting of arrays in
tests and no docstrings in tests.
BUG: Fix `take` parameter on `upcoef`

`upcoef` function would raise a value error due to a normal division
instead of an integer division. Changing this made it return an empty
array if `take == rec_len - 1`. The cleanest fix was to increment the
right instead of the left boundary, this also allows reconstruction of
the original signal using the sums of upcoef with 'd' and 'a' parts.

NOTE: This means that `upcoef` will return different (but equally
correct) results than before for the same inputs. Doesn't cause any
tests to fail and seems a saner behaviour.
ENH: Add `take` parameter to idwtn

Adds the `take` parameter to idwtn. This can take an iterable or single
integer and will ensure the resulting array is of those dimensions using
the `take` parameter of `upcoef`.
MAINT: Change order in which idwtn processes axes

By changing the order in which `idwtn` processes axes, any iterable used
in the `take` parameter can be used directly instead of first converted
to a tuple and reversed.

Note changes to `test_multidim.py` - these changes shouldn't make a
difference but are necessary to pass the tests. I suspect a bug in
numpy's testing routines.
STY: Fix style in tests and idwtn

Fix style as suggested by @ankit-maverick. Imports according to PEP8,
one newline between function definitions line length and spaces around
arithmetic operators.
STY: 2 newlines before function definitions
REV: Undo 22390f0

Processing axes in the exact reverse order to `dwtn` avoids floating
point errors when both the 'a' and 'd' components of a pixel are 0. Uses
`islice` to still allow any iterable to be passed as `take` parameter.
STY: Line wrapping
ENH: Add `mode` parameter to `idwtn`

The `mode` parameter of `idwtn` will allow a wavelet decomposition to be
reconstructed using the same parameters as `dwtn`. The new length is
calculated from the coefficient length and the mode. The `take`
parameter is still available and will override the calculated length.
BUG: Remove dict comprehension to support Python 2.6
BUG: Use explicit set constructor (Python 2.6)
BUG: Improve input validation for dwtn and idwtn

`idwtn` did not ensure input coefficients were of same size. This
resulted in output size being determined by the order of the dict
constructed, which is unpredictable and could lead to bugs. `idwtn` now
checks to ensure sizes of the accepted input coefficients are identical.

`dwtn` did not enter its main loop if the input was a single python
object. Therefore, the object was returned as-is instead of raising a
ValueError, this is now corrected.
TST: fix test precision (atol=0 doesn't work well) and some style issues.
DOC: set of minor docstring improvements.

Also move upcoef/downcoef wrappers in multidim.py within functions
that need them.
DOC: add example that uses dwt2/dwtn and their inverses on image data.
MAINT: fix a few test failures and style issues in tests.

Also test all modes of idwtn.
MAINT: add test for `take` parameter to idwtn, and some style issues.
Merge branch 'pr/50-idwtn' into master

See https://github.com/rgommers/pywt/pull/50 for review.