Possible fix for #594. I'm a little iffy about this because it feels hackish.  But it adds a new auto-generated module called astropy.utils._cython which contains a cython_version variable recording the Cython version that the Cython modules were last built with.  Technically this module doesn't *need* to be a Cython module, but that ensures that it only exists if the Cython modules were built correctly.  It has the added upshot of forcing the Cython C files to be regenerated if your Cython version has changed since the last build.
Fix typo that caused crash when Cython is not installed
Reworked approach to #594. The cython_version variable is no longer in a Cython module; that was a non-starter since it meant a compiled module would have to be shipped with the source distribution in order for it to know what version of Cython the C files were generated with.  Now there's just a generated cython_version.py that gets touched up any time Cython is used to the build with a different version of Cython from the last time.  This file will ship with the source distribution and its presence will prevent Cython from being used for a release version. But for git clones of a release the cython_version.py *won't* be present and Cython will be used.  So this should cover all the relevant use cases.
Remove unused import left over from an earlier version of this patch
Simplified logical statement and added some comments
Merge pull request #594 from iguananaut/issue-594

Fix logic for compiling from Cython files