Added multi-currency support and some code optimization.

Hello!

I've made a multi-currency support for Plutus and some code optimization, please check out it. [Here](http://www.mscs.dal.ca/~selinger/accounting/tutorial.html) you could find an explanation how does multi-currency work (through trading accounts). 

Also I have found that using subclasses of Amount it is not the good solution. Maybe it would be better to use the minus sign of the value to determine debit or credit amount. For the current implementation there are a lot of sql queries which could be minimized if use another approach.

Any thoughts appreciated. Thank you.