Use pex_exceptions macro to define FatalAlgorithmError

Unlike MeasurementError, this doesn't have any extra data members or methods,
so we should have been using this macro from the beginning to cut down on
boilerplate.
Invoke Swig macros necessary for wrapping new exceptions.

I'm not sure how this ever worked before, unless it was just poor test coverage.
Remove unused MeasurementDataFlags mechanism

Given the choice between porting this placeholder to C++ or simply removing it,
I think it's better to remove it.  We can add it back in later if we have a need for it,
but for now it seems superfluous.
Don't pass current PluginMap to new plugins upon construction

None of them were using this currently, it's likely none ever will, and it would be
very difficult to support this for C++ algorithms.
Move typedefs/enums into a separate header
Add new utility classes for algorithm implementors

Unlike the old ones, these utility classes are purely optional:
they're intended to be used by the algorithms (or pure Python
plugins), but they're not required.  They do make it a lot easier
to adhere to the schema conventions, though.
Add base classes for new C++ Algorithm interface
Generic Python wrappers that turn Algorithms into Plugins
Rework PsfFlux into new Algorithm interface.
Rework SdssShape into new Algorithm interface.
Merge branch 'u/jbosch/DM-1465'