[Tools] Made AURORA_FOREACH line-dependent to allow nested loops
[Tools] Created separate header Preprocessor.hpp
[Tools] Added Hash.hpp
[Dispatch] More flexible implementation for SingleDispatcher

Allows not only base-derived, but also other relationships between classes, such as in component-based systems.
Changes:
- Added class template DispatchTraits<K>
- Added class template RttiDispatchTraits<B, R>
- Added template parameter Traits to SingleDispatcher, for customization
- Replaced SingleDispatcher::add() overloads by single bind() method
- Changed implementation to use std::unordered_map + std::function instead of sorted std::vector + self-built functional
- Removed feature: Automatic base-derived conversions (may be reintroduced later, backend still available)
[Dispatch] More flexible implementation for DoubleDispatcher

Changes: See commit about SingleDispatcher
[Tools] Made hash functions work with enums