Compile modularization of core engine components
Added mkdocs documentation
Added NativeExtensionLoaded, NativeExtensionsLoaded, PreExtensionLoad, PreSubsystemCreate, SubsystemCreated events
Added support for library reloads to ISharedLibraryLoader and SoLoader; also updated SoLoader tests accordingly
Added IExtensionSearcher interface and default implementation
Fixed consistency in *System* <-> *Subsystem* naming
Replaced GpuBufferManager with IGpuBufferManager in engine core
Added GetLibraryLoaderFunc and GetLibraryUnloaderFunc to ISharedLibraryLoader interface and implemented them in SoLoader

Cleanup in ExtensionDependencyGraph

Moved BifrostLoader from core to natex component
BifrostLoader now has on overloaded constructor taking an ISharedLibraryLoaderFactory pointer to a factory to use when creating library loaders
BifrostLoader::LoadSystemExtension now takes a file path and doesn't add file extensions automatically
Moved implementation of Bifrost::CreateLibraryLoader to CC file

Added convenience class GloveSubsystemDefinition

Renamed *SubsystemRegistry to *SubsystemDefinitionRegistry and implemented a default one
Added an ISubsystemInstanceRegistry interface and default implementation for managing and instantiating ISubsystemDefinitionRegistries

Added Natex.h containing all forward declarations and public typedefs used in the native extension component

Added ISubsystem interface

Renamed glove::systemtypes namespace to glove::SystemTypes

Updated GloveCore to use new natex loading functionality

Moved GpuBufferManager implementation to GLRenderer module
Updated gtest_main.cc to use shared_ptr for glove core to fix issues using shared_from_this inside GloveCore

Updated system extension interface to use std::shared_ptrS to exchange pointers between module boundaries
Updated tests to reflect the change above
=== Rendering interface ===
Updated doxygen documentation for rendering core interface
Turned BufferUsage XXX enum into C++11 enum classes
Added IGpuBufferFactory interface
Added IMaterialFactory interface
Added IMeshFactory interface
Added IRendererFactory interface
Added IShaderFactory interface
Added IShaderProgramFactory interface
Added IMaterial interface
Added IMaterialAttribute interface
Added IShader interface
Added IShaderProgram interface
Added IIndexData interface
Added IVertexData interface
Added DynamicIndexData class to replace ManagerIndexData
Added DynamicVertexData class to replace ManagerVertexData
Added StaticIndexData class
Added StaticVertexData class
Added IVertexAttributeMapping interface
Added IVertexData interface
Added CUSTOM[0-9] elements to VertexAttributeSemantic enum
Added Rendering.h header which has forward declarations and shared_ptr typedefs for most classes used by the rendering interface
Added RenderingInterfaces.h which includes all public headers of the rendering interface
Added window construction hints class
Updated VertexAttributeUtils to use templates instead of switch/case constructs
Updated CMakeLists.txt to build an OBJECT library
VertexLayout now automatically calculates attribute strides per buffer
Removed Managed* classes
Removed most redundant documentation comments
Removed VertexFundamentals header

=== Rendering interface tests ===
Added IGpuBuffer mock
Added IGpuBufferFactory mock
Added IIndexData mock
Added IVertexData mock
Added Mesh mock
Added [Static|Dynamic][Index|Vertex]Data tests
Added Mesh tests
Added VertexAttribute tests
Added VertexAttributeUtils tests
Added VertexLayout tests
Added WindowConstructionHints tests
Added tests_gc_rendering test target to main CMakeLists for tests
Added CMakeLists.txt to utils directory building an OBJECT library
Fixed duplicate type/MouseMoveEvent.cc entry in events CMakeLists
Fixed missing type/MouseButtonEvent.cc entry in events CMakeLists
Updated events/CMakeLists to build an OBJECT library
Updated graph/CMakeLists to build an OBJECT library
Updated input/CMakeLists to build an OBJECT library
Updated internal/so/CMakeLists to build an OBJECT library
Updated log/CMakeLists to build an OBJECT library
Updated natex/CMakeLists to build an OBJECT library
Updated pitamem/CMakeLists to build an OBJECT library
Updated core CMakeLists to use the OBJECT libraries
Added missing mesh/IMesh.h include to renderin/RenderingInterfaces.h
Updated render interface tests to also check if DynamicIndexData::Flush calls the buffer's WriteData with proper size argument
=== Implemented OpenGL rendering module ===
Added GLGpuBufferFactory
Added GLMaterialFactory
Added GLMeshFactory
Added GLRendererFactory
Added GLRendererSubsystemFactory
Added GLShaderFactory
Added GLShaderProgramFactory
Added GlfwWrapper
Added OpenGLWrapper
Added GLMaterialAttribute
Added GLShader
Added GLShaderProgram
Added GLVertexAttributeMapping
Added GLBaseMesh
Added GLRendererExtension
  Extension UUID: {0xd1, 0xd8, 0x2f, 0x90, 0x81, 0xcd, 0x41, 0xe2, 0x8d, 0x30, 0x2e, 0xb7, 0xdf, 0x27, 0xb2, 0xa1}
  Extension Name: mod_GLRenderer
  Registers subsystem of type GLRendererSubsystemDefinition
Added GLRendererSubsystem
Added GLRendererSubsystemDefinition
  Subsystem UUID: {0x32, 0xcc, 0x29, 0x6b, 0xbb, 0xcd, 0x47, 0xb3, 0xbb, 0x02, 0x88, 0xbd, 0x01, 0xa6, 0x3d, 0xf7}
  Subsystem Name: rnd_GLRenderer
  Subsystem Type: IRenderSubsystem::subsystemType
  Subsystem Dependencies: None
Added OpenGLRendererModule.h header forward declaring most classes and typedef-ing their shared_ptr types
Renamed GLRenderer module library to mod_glrenderer
Updated all existing OpenGL rendering implementations to use the new core interface
Updated GLRenderer to use GlfwWrapper
Removed GpuBufferManager
Removed Material and MappedMaterialAttribute from shader/
Moved cellulose main.cc to its own directory and added CMake build file
Updated cellulose main.cc to use new rendering core interface
Fixed DirectoryExtensionSearcher not prepending the search directory to returned extensions [CEL-58]
Updated ISubsystemInstanceRegistry and its default implementation to expose methods to get subsystem instances by type
Added SubsystemInstanceList typedef to Natex.h header
Removed SubsystemTypes.[h|cc]
  Subsystem type constants are now exposed by the individual subsystem interfaces
Removed all plugin/python related files from build for now since the refactoring breaks pretty much all Python bindings
Added "engine.load-natex" configuration property and --no-natex command line option to enable/disable natex loading
Updated GLOVE_EXCEPTION macro to specify the fully qualified name of GloveException
Removed glove target from root CMake build file
Updated .clang-format and applied new styles to core, tests/rendering, tests/soloader, tests/natex and modules directories
Merge pull request #1 from Monofraps/bifrost

Bifrost loader merge