Fixed a bug in funjects with multiple patterns involving inverses
Made symbol instances unique to their value

i.e., the following should always be true:

```
a = 'foo'.to-symbol
b = 'foo'.to-symbol
a is b
```
Added more primitive Funject instance methods

- clone
- apply
- on
- then
- integer?
- float?

Also removed the Funject instance method __name__.
Added primitive String instance methods

- length
- + (with inverses)
- *
- [<number>]
Added primitive Number instance methods

- degrees-to-radians
- radians-to-degrees
- sqrt
- root
- ln
- log
- sin
- cos
- tan
- sec
- csc
- cot
- asin
- acos
- atan
- atan/
- asec
- acsc
- acot
- sinh
- cosh
- tanh
- coth
- sech
- csch
- asinh
- acosh
- atanh
- acoth
- asech
- acsch
- abs
- ceil
- floor
- round
- to-fixed
- to-pennies
- to-dollars
- times
- upto
- downto
- +
- -
- *
- /
- %
- ^
- >
- <
- >=
- <=
Added primitive Boolean instance methods

- not
- and
- or
- xor