--------------------------------------------------------------------------------
BEAST TODO
--------------------------------------------------------------------------------

- Remove ReadWriteMutex and replace it with a CriticalSection
  since the implementation is broken.

- Rewrite SharedData to work with a CriticalSection

- Use new file naming convention

- Use SemanticVersion for beast version numbers to replace BEAST_VERSION

- add support for a __PRETTY_FUNCTION__ equivalent for all environments

- add expectThrow() to UnitTest, where it expects an exception

- Import secp256k1 from sipa

- HashMap work:
  - Add unit test
  - Return size_t from hash function, take out upperLimit, move mod % to caller
  - Make hash function a functor using operator()
  - Implement HardenedHashFunctions
  - Fix problem with assigning to the result of operator[] maybe use a proxy?

- Set sqlite thread safety model to '2' in beast_sqlite

- Document and rename all the sqdb files and classes

- Specialize UnsignedInteger<> for peformance in the storage format

- Rename HeapBlock routines to not conflict with _CRTDBG_MAP_ALLOC macros

- Design a WeakPtr / SharedPtr / SharedObject intrusive system

- Implement beast::Bimap?

- Use Bimap for storage in the DeadlineTimer::Manager, to support
  thousands of timers.

- Think about adding a shouldStop bool to InterruptibleThread, along
  with a shouldStop () function returning bool, and a stop() method.

- Make OwnedArray add routines return a pointer instead of reference

- Tidy up CacheLine, MemoryAlignment

- Remove anything having to do with DLL builds like
  BEAST_DLL, BEAST_DLL_BUILD, BEAST_DISABLE_DLL_ALLOCATORS

- Fix FifoFreeStoreWithTLS reference counting bug

- Implement a reasonable substitute for boost's thread_local_storage

- Think about doing away with BEAST_CALLTYPE and BEAST_API

- Decide if headers should just include BeastConfig.h instead of making the
  host program do it.

- Rename malloc/calloc JUCE members that conflict with the debug CRT from MSVC

- Make beast::HashMap support assignment via operator[]

- Reformat every Doxygen comment
- Fix Doxygen metatags
- update Beast Doxyfile

- Rename include guards to boost style, e.g. BEAST_THROW_H_INCLUDED

- Decide if we should get rid of AtomicCounter, AtomicFlag, AtomicPointer, AtomicState

- Clean up CacheLine, StaticObject

- Clean up ConcurrentObject

- Rename SharedData to SharedState or something?

- Figure out what to do with ReadWriteLock, and NamedPipe which uses it?

- Put BEAST_PUBLIC_FUNCTION in front of all loose functions

- restructure the repo sources to look like this:
  /Source/beast/beast_core/beast_core.h
  etc...
- Put the BeastConfig.h at the root of the repo.
- Make sure the template BeastConfig.h is included in the Doxyfile

- Implement robust key/value database with bulk write

