Refactor the HuffmanCoder class

Violate encapsulation inside HuffmanCoder's private class Node by
removing the getters and setters. Violating encapsulation inside a
private class is fine in my eyes and improves the readability of the
code.
Refactor the minimum frequency node detection

Instead of a brute force search on all nodes in the huffman tree for the
node with smallest frequency, a heap data structure is used which offers
better performance guarantees.