Extracted core functionality into static libary
* this was needed to share object files between the newly separated test-case and example target executables
* allows for easy development of multiple "frontends" to the same core functionality