Changed SafeNameDictionary to be a generic type and added a non-generic version of that implementation, improving on #38.