separate targets lib/dll/unittest_lib/unittest_dll

- depending on the platform support
  `target:` will depend on `lib` or `dll`
  `unittest:` will depend on `unittest_lib` or `unittest_dll`

- all targets can be build explicitly

- remove the SHARED flag