Reorganize code across top-level packages
This MR reorganizes the code across two top-level packages, cmd and internal. It does not delve into reorganizing code across sub-packages. That is for other MRs.
As of today, the codebase of this service is not intended to be used as a lib in other Go applications, but rather as a standalone/isolated service. As such, we can move all the implementation code into a top-level internal package, which following the Go convention, is not accessible to external projects, but any package within this project can import and use it (more details).
We then move main.go into a new cmd package (which in Go usually contains the main application or executable(s) of a project, with a subdirectory inside per standalone executable). This cmd package is the sole consumer of the code within internal, and is responsible to hold the code used to start the service.
This adheres to the common Go convention of using cmd, pkg (for "public"/"importable" code, which we have none here) and internal.
Related to #16 (closed).