Documentation Typo Fix

Fixed a typo ("pointer" => "pointed") in json.hpp.
Implicit Conversion Fix

Fixed a line of code which was relying on an old implicit SmartPointer-to-pointer implicit conversion.
.gitignore

Updated .gitignore.  Made a few of the rules more general -- the ones pertaining to "gcc" folders and "old" folders -- so I don't have to keep adding new rules whenever I create a new, similarly-named folder.  Added a rule to ignore the "experimental" folder.
CLI Front-End Code Formatting

Fixed code formatting in front_ends/cli/main.cpp.
Hash Changes

Removed the std::hash specialization for SmartPointers -- it's now part of RLeahyLib.

Added a std::hash specialization for Vector.
IPAddress Hash Change

Realized that the way that I had implemented std::hash for IPAddress objects was ridiculous.  An IPAddress is either a UInt128 -- if it's IPv6 -- or a UInt32 -- if it's not.  I should've just been using the std::hash specializations for those integer types.

In changing the std::hash implementation over, realized that while GCC supplies a 128-bit integer type, it doesn't supply std::hash specializations for it, so I implemented those as well.