Format via goimports; Fix typo in Copyright
Zero memory after use; Refactor; Add tests

This commit is essentially a rewrite of the code Jochen posted
2014-10-24 with the request for feedback. So, although this commit
looks massive it grow over time.

The main motivation for the rewrite was to not keep sensible information
in RAM longer than needed. Since every Golang-Runtime might handle cleanup of the
used RAM differently (if any memory cleanup takes place at all before the
program exists), I decided to zero the used RAM myself. I checked the RAM
afterwards with a generated Heap Dump (see [1]) as well as with gdb to see if any
occurances of sensible information was left: I found none.

Attention: this is (obviously) not a proof of absense!

The original code created a lot of copies of sensitive information due the
use of strings.Replace(), md5.New().Sum(), returned strings etc. This made the
code much much shorted but spreaded pieces of information all over the place.
In addition, some of the used functions of the Golang-Stdlib behave very subtle
in regards to memory (md5.New().Sum() vs md5.Sum()).

On Unix gosgp now uses syscall.Mlockall() in order to prevent gosgp to be
swapped out to disk. This is not implemented on Microsoft Windows (yet).

Other changes:

* Improved UI: added -length and -domain flags
* Add tests
* Fix typos in the license comment

[1]: https://code.google.com/p/go-wiki/wiki/heapdump13
Add README.md
Merge pull request #1 from mgumz/master

Rewrite with zero used memory and reduced allocations in mind