Add back "0 + 1*x" prints as "x" functionality

be wary of this javascript pattern.
```javascript
options.precision = 0
options.precision = options.precision || 3
options.precision === 0 // false
```
For numeric quantities, a zero is falsy, so this pattern will always choose a default over a zero value.
Also, its more customary to parse an options object into variable names: 
```javascript
options = options || {};
var precision = !isNaN(options.precision) ? options.precision : 3;
var doSimplify = options.doSimplify | false;
```
the isNotaNumber function is a great example of why javascript is a terrible language. isNaN(null) === false  // true

Okay, so null is a number, damn. But really you are only parsing to see if precision is set, if its not it will === `undefined` which luckily is not a number.

If we expected nulls coming in, we would have to have another check. For now, lets at least let the user set precision = 0.

To really get a flavour of how weird Javascript is, check out https://www.destroyallsoftware.com/talks/wat