Library symbol versioning and visibility

Hide all symbols we don't intend to export (i.e. ppkt_* and such).
This should make it easier to use the library in other projects
(reducing the odds of name collisions) and discourage use of internal
functions.

Additionally, introduce versioning of the symbols as well as propper
soname control.