Cleaned up code so it more closely matches canonical F# style, formatting, and naming conventions.
Split the basic test cases up into individual tests so it's easier to identify problems if something goes wrong.