make cayley go-gettable

This set of changes reorganises the cayley codebase to conform to the normal Go project organisation. In addition to this it makes superficial changes to take code and files closer to Go convention.