better var names and keeping property name into variables instead of using so much array index notations.
now encode accepts object with properties with array
tests considering special chars and  arrays with empty values.
spec test changed to cover empty array and array with empty values
Merge branch 'qs-encode'