A simple MaxReg implementation

In accordance with prophecy #55, I have written a register that stores the largest integer that you assign to it.

Questions
- [x] Should this be for all terms, or just numbers? (I think it's easier to manage expectations with just numbers)
- [x] Should it be integers or all numbers? (I coded with integers to start now, easily expanded)
- [ ] What do we do about returning `undefined` to a user? 
- [x] Do we error if someone assigns a smaller number to the register than what's in it? (I think no)
- [x] Do we error if someone assigns a non-number to the register? (I think yes)
- [x] Do we want a MinReg too? (I think maybe, but one was enough to start)
@russelldb You are correct. Opaque types must be composite types (records usually). They can't be a union type of two or more fundamental types.