Fix warnings about dollar and dlsym 

We were getting some warnings about dlsym when compiling like warnings in the issues #1447 and #1444

C does not support casts between function pointers and data pointers (yet) because they sizes can be different.... Maybe there are some optimizations such as implicit casts when compiling/linking for dlsym. This can be used until found better solution

There are some solutions here: http://christopherpoole.github.io/dynamically-linking-shared-objects-in-c++/ for avoiding void * to fn pointer.

There is a comment on this man page http://linux.die.net/man/3/dlsym like this:
```C
/* Writing: cosine = (double (*)(double)) dlsym(handle, "cos");
       would seem more natural, but the C99 standard leaves
       casting from "void *" to a function pointer undefined.
       The assignment used below is the POSIX.1-2003 (Technical
       Corrigendum 1) workaround; see the Rationale for the
       POSIX specification of dlsym(). */

   *(void **) (&cosine) = dlsym(handle, "cos");
```

I applied the approach/solution for avoiding warnings.

- Fix warnings about dlsym and others
- Fix warnings about dollar 

"-Wno-dollar-in-identifier-extension" won't work with compiler other than Clang, AFAIK. Check the comment by Ben in #1447.