Go project structure

I am enjoying the cat and had a look at the code to make some changes. Some things caught my attention which I would like to address first (when I find the time). Firstly this PR changes the project structure to be more "go project idiomatic". This makes the project's binary also go-getable.