declare wrapper without needing to load dll/so
clean up device linking when building shared libraries
smoke test for various linking/plugin configurations
add plugin tests to travis