First draft; now playable

TODO:
    comment
    breakup large blocks
    error checking
    refactor to interfaces
    cleanup/replace board.bsort()