WIP: Refactoring NDData

This PR is a companion to astropy/astropy#2855 and also came out of the NDData telecon. The goal is to simplify the base NDData class so that the base class becomes a simple container for data interchange.

The arithmetic methods on the current ``NDData`` are factored out into an ``NDarithmetic`` mixin class. The class ``NDDataArithmetic`` is include as a convenience and works as a replacement for the current ``NDData`` (I've check that the current ccdproc tests pass if I make make one change to the code: subclass from ``NDDataArithmetic`` instead of ``NDData``).

I've also moved the ``NDData`` arithmetic tests into a separate file.

**edit 9/30/2014:** the ``flags`` property is also removed from ``NDData``.
**edit 10/2/2014:** Uncertainty and mask implementation moved from ``NDData`` to ``NDDataArithmetic`` and removed automatic conversion of ``NDData`` to a numpy array. Updated task list.

A rendered version of the documentation changes is [here](http://physics.mnstate.edu/craig/astropy/nddata).

Still not done:
- [x] Remove checks for ``FlagCollection`` shape (should this be done?)
- [ ] ~~Attempt to make ``mask``, ``unit`` point to the ``mask`` of the data (if it has one) instead of separating the mask from the data, and the same for the unit.~~
- [x] Fix doctest failures
- [ ] Update docs to reflect 

@Cadair -- please check to see whether this revision has ``wcs`` working the way you wanted.

cc  @astrofrog  @cdeil @perrygreenfield @crawfordsm @larrybradley @adamginsburg @bsipocz 
The ``try...except`` is a little confusing. Why not simply do:

```
if not hasattr(value, 'uncertainty_type') or not isinstance(value.uncertainty_type, six.string_types):
    raise TypeError(...)
```
?