Converted Entity::tags to a pointer.

The idea is that most entities don't use tags, so wasting space on it when it's not needed isn't a good idea. tags is protected, so this does not affect the public API. All the functions that use tags were updated appropriately.