Added support for arbitrary currencies

I needed this for my own use case (South African Rand) but refactored the code to be able to support arbitrary currencies. Hopefully this will be useful. See #8 for a discussion I started on this topic.