Actually use the visibility features.

Checks for visibility flag support and bails if missing. Marks
exported symbols as such. And also updates the example application
to link against the shared library.
Remove Java .equals() think-o.
Update .gitignore
Add coverage support to build system.