Move extractor to own class
proxys take const char* instead of std::string

Otherwise, operations like Vector[“foo”] fight over which operator[] to
invoke