Performance and stability improv. to all_world2pix

Significant (typically 1000-2000 times faster) improvements of the
performance and stability of `wcs.all_world2pix` function. The used
algorithm is a completely vectorized implementation of the method of
consecutive approximations. While this method is a low-order method, it
is more than adequate for image distortions that are typical in
astrophysical images (smooth, slowly varying polynomials). The method
is somewhat similar to the existing `HSTWCS.all_sky2pix`, though the
choice of the function, initial approximation, and implementation,
makes the method used here to converge in half of the iterations of
`HSTWCS.all_sky2pix`.

While there is a check to see if WCS contains higher-order distortions
(and return the exact solution if it does not), the method itself does
not *require* this check and will converge to the exact solution after
one iteration. This check is mostly for performance purposes to avoid
unnecessary iterative solution for images that do not contain
distortions (and pix->sky requires only WCS-based, i.e., CD-only
transformations).

The proposed replacement for the current implementation of
`all_world2pix` avoids unnecessary use of `wcs_world2pix` and
`all_pix2world` such as `wcs_world2pix(all_pix2world(pix))` by
replacing this with `pix2foc`. This avoids unnecessary CD-matrix based
transformation CD(CD^{-1})=I which in itself results in about 50%
performance improvement.

The function has additional code to check for *divergence* condition
(as opposite to *slow convergence*) when the consecutive approximations
*diverge*. This can happen when the pixel coordinates are *far* away
from the reference pixel (distortions are "severely" extrapolated), or
for poorly-defined geometric distortions.

Finally, the new test function `test_all_world2pix_direct` (proposed as
a replacement to the old test) provides a much more improved
(versatile) and *thorough* test of the `all_world2pix` function.

These improvements address the issues raised in #1977 and #2294 (in
addition to performance improvements).
Minor corrections to comments and help
New and improved test for all_world2pix

1. Added parameters to specify input image file name and extension
number;
2. Added a check for the existence of the input image files. If the
file is not found, an IOError will be thrown;
3. Added extra print statements for the cases when `NoConvergence`
exceptions are thrown.
Minor changes to the test func. for all_world2pix

1. Added more parameters to the test function;
2. Changed default 'fame' to None => load 'data/sip.fits'. If fame is a
file name - that file will be opened.
3. Improved aesthetics to meed Astropy standards.
Added 2 parameters to the test function

Added `maxiter` and `detect_divergence` parameters to the
`test_all_world2pix` function.
Minor improv. to prints; extra parameters

Added `detect_divergence` and `maxiter` to the list of parameters of
the test function of `all_world2pix`.
Improvement in divergence detection; cosmetics

1. Previous implementation of my algorithm had the following problem:
detection of the divergence was happening *after* the divergent
correction has been applied to the current solution. However, one of
the main benefits of having divergence detection is to be able to get
the "best" solution for the diverging points. This "best" solution must
be the last converging solution *just before* the solution started
diverging. So, previous implementation was one iteration too late to
retain the "best" solution for the diverging points.
2. Corrected use of white spaces and backlashes per suggestions by
@embray and @mdboom.
3. Several small performance improvements.
4. Corrected documentation formatting and minor typos. Updated examples
with the output corresponding to the changes made in this commit.
os.linesep -> '\n'
Skip doctests for `all_world2pix`

Tests crash because the FITS file used in Examples section is missing.