Replaced bad $ with + in string-validation regexp.
There's an RFC and a regexp we can use on identifiers!
Update the Identifier validation code to follow the RFC.

Also fixed another instance of a $ being where it shouldn't belong.
Adding the test suite for strings and identifiers!