Upgrade Istanbul

* Upgrading Istanbul
* Marking some of the untestable code as not required for coverage
* Adding unittests to increase coverage

I know this is a bit crazy, but:
Statements   : 100% ( 1621/1621 ), 6 ignored
Branches     : 98.98% ( 1069/1080 ), 3 ignored
Functions    : 100% ( 452/452 )
Lines        : 100% ( 1597/1597 )