open_memstream as a test helper function.

To compare schemer_print result against expected result, `open_memstream` is
utilized to create in-memory file buffer. However, BSD systems does not
provide `open_memstream`, but instead `funpoen` can be used to simulate this
function. Therefore, Some efforts are made to provide this function on OS X.
Implemented tests for Schemer objects API.
Cleaned up Makefile.

Better Makefile layout for future builds and tests.