Fix clang compiler error

error: non-constant-expression cannot be narrowed from type 'unsigned
int' to 'int' in initializer list [-Wc++11-narrowing]
note: override this message by inserting an explicit cast -> done
timer.h: use header file instead of forward declaration
callback is now a class with variadic template

The new callback class should be used instead of the old ones.
It has a lot of benefits, e.g. more than 6 parameter, lambda expressions
can be used but also old function/member pointer.
The old callbacks are typedefs (using) for now, but may be later
removed.

The syntax of a callback is equal to the syntax of a std::function, e.g.
callback<int(int, std::string)>, which is pretty nice.

Testing was done as far as I could do, namely compile the whole
clanlib-lib and all examples. They compiled and ran fine.
added "Documentation" to callback