Based on some pre-review comments, I'm experimenting with refactoring the
unordered containers to use less macros to see how it comparse to the current
version. (This is not part of the review).


[SVN r41820]
Instead of using macros to select the alternative inserts, give them different names and call them explicitly from the container class.

[SVN r41821]
Remove all macro use from hash_table, moving it out of hash_table_impl.hpp (which is included twice, once for equivalent keys, once for unique keys) to hash_table.hpp

[SVN r41825]
Make the allocators templated rather than macro based.

[SVN r41826]
Hide the macro implemented hash_table_data behind an mpl if statement so that
the other classes don't need the whole data class as a template parameter.



[SVN r41827]
Remove some of the alternative implementations. This makes things a bit less efficient, but it's probably okay in most cases.

[SVN r41886]
Got a couple of assertions the wrong way round.

[SVN r41887]
Move everything concerning nodes that is dependent on the node's structure into node_base.


[SVN r41890]
Pull 'bucket' out HASH_TABLE_DATA in hash_table_impl.hpp into hash_table.hpp

[SVN r41891]
Rename the two different node_base classes so that they can coexist.

[SVN r41892]
Pull the two different node_base classes out of HASH_TABLE_DATA.

[SVN r41894]
Use a template parameter for hash_table_data instead of a macro.

[SVN r41897]
Move hash_table_data into hash_table.hpp

[SVN r41900]
Only need a single templates 'hash_types' class.

[SVN r41902]
No need for hash_types to know about hash_table_data.

[SVN r41903]
Merge in changes from hash trunk. Most are in response to the review.

[SVN r42111]
Merge in changes.


[SVN r42180]