Fix warning in Visual Studio:

warning C4146: unary minus operator applied to unsigned type, result still unsigned
Add missing line from previous fix.
Explicity disallow get_idx for boolean type, to avoid ambiguity with a map.
Fix conversion for C-strings (both literals and normal C-strings) so it compiles on Visual Studio.
Rename clear() to reset(), and it now takes an optional node parameter.
Add std::pair conversion specialization.