Encode parameters correctly when building an OAuth base string

Parameter key and value escaping needs to use the extended algorithm
from the OAuth specification, not the standard URI escaping algorithm
so we need to escape !, ', *, ( and ) characters.
Make ohauth.stringQs decode keys as well as values