PLT-464 - Add country

A class representing a country by ISO-3166-1.

This is based on `Currency` and is not an extensible enum because there is no associated data or logic, ie. it is no more than a typesafe value.
Most uses will probably actually load dynamically, the constants are more for simple use and test cases. A such the cache seems sensible, and matched the current design of this and currency.