Refactor Packer and PackerTool

Resolves #1 - adds refactored Packer code (formerly known as Packer DLL) and new PackerTool.

This is a draft, first version of new Packer written almost entirely from ground up and still has missing features from #19 and #20. Additionally, Packer unit tests were written.
Use std::function