-The OString class now stores a static const member mEmptyString as a shortcut to quickly construct empty OStrings.

git-svn-id: http://odamex.net/svn/root/trunk@4219 b0bcef46-2027-0410-bd56-ab726e9a1d04
-Forgot to insert the hashed string value to the hash-to-id lookup table when adding a new string to the OString table.
-Avoid some unnecessary temporary std::string construction when c-strings are passed to the OString constructors / assignment operators.
-Implment iequals.
-Add a static member function to print the contents of the OString Table for debugging purposes.

git-svn-id: http://odamex.net/svn/root/trunk@4220 b0bcef46-2027-0410-bd56-ab726e9a1d04
-Avoid using non-local static members for the StringTable and StringLookupTable in OStream. Ensure those tables are properly initialized with local static members (singleton-style).
-This prevents problems from occuring when non-local static OString objects are initialized prior to the static StringTable and StringLookupTable members of OString being initialized.

git-svn-id: http://odamex.net/svn/root/trunk@4221 b0bcef46-2027-0410-bd56-ab726e9a1d04
-Non-composite GameObjectComponents now store their typename as a static const OString so that they can be constructed more quickly.
-GameObjectManager::registerComponentType doesn't need a typename parameter as it can be obtained from the component parameter.

git-svn-id: http://odamex.net/svn/root/branches/net3-base@4222 b0bcef46-2027-0410-bd56-ab726e9a1d04
-Merge from trunk into net3-base.

git-svn-id: http://odamex.net/svn/root/branches/net3-base@4223 b0bcef46-2027-0410-bd56-ab726e9a1d04
-Switch the table that maps composites to their component children from HashTable to std::multimap since there will be multiple instances of the same composite ID in the table.
-GameObjectComponents now store a pointer to their owner GameObjectManager.

git-svn-id: http://odamex.net/svn/root/branches/net3-base@4224 b0bcef46-2027-0410-bd56-ab726e9a1d04