Importing optional dependencies

This PR is a followup to https://github.com/astropy/astropy/issues/2604.  It adds to the developer documentation about importing optional dependencies at both the function/method level and the module level.  It also removes the re-raising of a custom `ImportError` for most optional dependencies.

I did not change two instances where specific versions of optional packages were required (that seems reasonable to raise a custom `ImportError`).  I also didn't change the custom `ImportError`s in `tests/helper.py`, but I can do that too if desired.
Here I would prefer something like:

```
class SuperClass(object): pass
```

I could at least conceive of a few corner cases where it would be problematic to not at least define a new class, rather than just use a new name for `object`.