Various updates and fixes
Unit tests run on VS2017, GCC v8 (Windows & Linux)
Added 'memory model' selection for queues to allow more efficient implementations.
Maximum queue sizes:
MEMORY_MODEL_SMALL 255 (254 for queue_spsc_atomic)
MEMORY_MODEL_MEDIUM 65535
MEMORY_MODEL_LARGE 2147483647
MEMORY_MODEL_HUGE 9223372036854775807
Fixed syntax errors highlighted by GCC v8
Removed reference_flat_set & reference_flat_map reliance on equality.
Removed flat_set & flat_map reliance on equality.
Added tests for limited support for self insert for strings.
Added wipe_on_destruct template class for secure wiping of objects on destruction.
Updated unique_ptr API.
Protected destructor for some FSM classes.
Observer's remove_observer returns bool.
Fixed vector of pointer typedefs
Added specialisation for vector<const T*>
Remove SFINAE from array_view.
Added default etl::less compare type appropriate map and set classes.
Moved non-template code in pvoidvector to cpp file.
Made atomic load const for non STL versions
Renamed STATIC_ASSERT to ETL_STATIC_ASSERT
Removed non-conforming std::nullptr
Compatibility changes for Segger IDE, GCC & STLPort
Merged CMake branch
Fixed compile error when ETL_DEBUG_COUNT is not defined.
Fix Github issue #73 (Timers)
Added CRC32-C (Castagnoli)
Added binary_fill
Added has_zero_byte
Added has_byte_n
Modified header guards.
Added etl::type_select
Added etl::null_type
Added capacity() to etl::queue
Prefixed max_size() and capacity() with ETL_CONSTEXPR in all queue types.
Added etl::permutations and etl::combinations constant templates.
Added improved atomics.
Added mutex