Improvements to `PGN` class.

* Class in now immutable
* Overrode `Object` methods to make comparisons work
* Fixed check(s) for invalid PGNs
Made PGN selector in demo app work.
fixup! Made PGN selector in demo app work.
Fixed crash when receiving invalid messages