Homework 3.1

First pass.  You can see I'm attempting to implement some validation.  I probably shouldn't include any console logging in the constructor, especially in release, but since this is for use in a console I've added a convenience 'warning' method.
hah! normally if we want to warn we use `console.error` or `throw`