Feature precision

implemented precision commodity sub directive.

Use case: 
Monetary test cases only .

Performance: 
 It does not affect ledger performance significantly .Sorting is only done just when required and a flag can be added so that sorting is not done for those who do not require this feature. 

Comment:
Sorting by commodity is already being done for functions like printing.  fn: amount_map_sorter

Tests:
All tests which do not use this feature passed at the time of writing this feature. Tests using this feature passed but have been written to check specific requirements. More tests should be added with combination of options using this feature. 

Challenge faced: 
Account with single amount does not use balance_t object, The balance is maintained as amount_t object. Rounding implemented for balance valuation does not work, rounding has been done after the amount is valued. 

Future work: 
Extend this feature to non-monetary use cases.