Use primitive values as primitives, not objects

Use primitive values as primitives (String, Number, Boolean), not objects of those types.

Previous to this commit, a simple string `'abc'` would be stored as a String object which when inspected has this structure `{ 0: 'a', 1: 'b', 2: 'c', length: 3 }`. This is due to the fact that primitive values are not instances of the respective objects:

```javascript
'abc' instanceof String // = false
123 instanceof Number // = false
```