Rearranged code, moving helper functions to seperate file

(and snuck in an expansion of FuncFSharp up to 19 args)