Made cooldowns of abilities scriptable

 - Removed hardcoded using of attributes
 - Simply introduced lua functions to set global and ability cooldowns
 - Requires database update
 - Bumps the protocol
Use '/' as seperator for ability categories rather than '_'

I find this a lot more readable.
Only call ability recharge callback if it is valid
Removed ability categories
Allow abilities name for use_ability()
Fixed warning which used an invalid iterator
Unshared the serialization of characters

This getting annoying while trying to do multiple changes.
Types/structures had to be shared all the time making it nessecary to
find ugly workarounds.
Allowed to push attributeinfos for the attribute recalculation

While on it I replaced the id usage in the server with the usage of the
AttributeInfo directly.

Next steps:
 - Dehardcode the core attribute ids and store their
   attributeinfos somewhere in AttributeManager (for now i simply
   wrapped the ids with getAttributeInfo().
 - Move AttributeInfo out of AttributeManager to shorten the usage + to
   allow using a pointer in ModifierLocation without forward declaring
   it.
Secured the use of the AttributeInfo where nessecary

In some cases no longer existing attribute ids sent by the account
server or client were able to create crashs.