MemoryCounter: Remove test sources and script
lib/MemoryCounter: Refactor counter update logic
lib/MemoryCounter: Update counters on exception

A basic block in LLVM may include instructions that call
__cxa_throw(). This function is used to implement exceptions, and will
never return. Therefore, if an exception is thrown, the number of STORE
and LOAD instructions for that basic block will be lost.

To fix this, we can insert counter increment instructions before any
calls to the __cxa_throw() function.