Simplify build process

@cap @stephentu 
OK, I've been using `debug` to denote whether assertions are on, and am open to other naming conventions. I'd like assertions to on in the python code, since that is where tests are run. In loom we build both debug and release versions of the engine. Whenever there is ever a problem in production, we re-run through the debug code to get a stack trace. I've often found that stack traces in non-asserting binaries are difficult to interpret since SEGFAULT usually happens way after when the first assertion would have been triggered; it's been more helpful to just re-run with a seatbelt.

What if we had two shared libraries and no static library, as follows?

- distributions_debug: -g -fno-omit-frame-pointer -O3 -DDIST_DEBUG_LEVEL=3 (used in python, loom_debug, and data microscopes)
- distributions_release: -O3 -fomit-frame-pointer -DNDEBUG=1 (used in loom_release)