CMake related fixes

The first patch fix up the problem where the CMake build generates libevent_extras instead of libevent_extra as building with GNU autotools (making the result incompatible). In addition to that it links the test programs with event_extra instead of event. According to the "libevent" book "This library exists for historical reasons; it contains the contents of both libevent_core and libevent_extra. You shouldn’t use it; it may go away in a future version of Libevent"

The second patch add an option top build shared libraries. It looks quite invasive given that it adds a "visibility tag" in front of each symbol in the headers that should be visible from outside the library. This is _needed_ by windows in order to get the __declspec to either export/import the symbol, but will also allow us use the visibility tags for shared objects on other platforms to keep symbols private within the shared objects.