common: Add visibility.h

I noticed that I used separate export-import attribute macro for each
shared library. Those macro were absolutely identical, except for name.
So, I replaced those with single shared macro (now only tiny macro will be
needed, which chooses EXPORT or IMPORT depending on preprocessor settings)
Also, I added visibility attribute for GCC and Clang.
Add export attribute macros
Update hrengin conventions
Update makefiles