Update Window's .gitignore
Replace IS_AWAY() and IS_OPER() macros with User::IsAway() and User::IsOper()
BanCache: Don't repeat ourselves, one BanCacheManager::AddHit() and one BanCacheHit constructor is enough
BanCache: Do one hash lookup in BanCacheManager::AddHit()
BanCache: Remove BanCacheHit::IP field, and BanCacheManager::RemoveHit()

The IP field was only used in RemoveHit(), RemoveHit() was only called from GetHit()
BanCache: Simplify BanCacheManager::RemoveEntries()
BanCache: Remove BanCacheManager::RehashCache()

The function was never called
BanCache: Move expiration code into a function, call it from RemoveEntries()
Run OnUnloadModule hook before starting to unregister services provided by the module
Fix clang warning about IsOper()
Convert ISUPPORT to use a map instead of a string.
Merge pull request #487 from SaberUK/master+better-isupport-api

Convert ISUPPORT to use a map instead of a string.
Add LOG_ prefix to the log level enum values.
Merge pull request #488 from SaberUK/master+loglevel-rename

Add LOG_ prefix to the log level enum values.
Tidy up source files:
- Use #pragma once instead of include guards.
- Move header files in src/modules to include/modules.
- Fixed various spacing issues.
Merge pull request #461 from SaberUK/master+header-cleanup

Tidy up source files.
m_spanningtree IDLE handler: Rewrite
m_spanningtree FMODE handler: Rework

Check for error conditions before doing any work
Get rid of hardcoded maxmodes and a loop that copies a container
m_spanningtree UID handler: Remove dead code
m_spanningtree UID handler: Log and drop the link when a server introduces a user with an unknown user mode