Added a simple automata to read member names

Rather than reading a string and then doing a dictionary lookup we
create a simple automata based on the names of the members, returning
the index of the setter method
Merge remote-tracking branch 'origin/master' into string-automata
Fixed NameAutomata to handle escaped characters

I should put a more direct test in; i.e. the one at the moment relies on
turning off UseHashWhenMatchingMembers, but if that internal code was
changed then this isn't a strong guarentee that the Automata code path
is run.
add a speed test; this does appear to be faster, will merge in; open question, are the automata faster than hashing as well?
the automata do appear to be faster than hashing
remove hashing from non-anonymous member lookups; closes #47