Improved solution architecture.

- Separated core functionality into its own library that can be easily
used within other projects.
- Separated existing windows client into its own project that uses core
functionality library.
- Created a command line client that uses core functionality library.
The command line client accepts its input through both the command line
parameters, as well as standard input stream, so it supports piping.