Add Register Class

Register is an abstract base class for real and virtual registers.  A
few examples of these registers are; HardwareRegister, ConstantRegister,
NotRegister, and AndRegister.  As a base class of register types, the
Register class creates a place where these registers can be put
together like logical building blocks.  For example, Register makes this
possible:

Register * fir = new HardwareRegister(REG_ADDRESS, REG_WIDTH,
                                      DEFAULT_CHIP_TYPE, ACCESS_RO);
Register * mask = new ConstantRegister( 0xffffffff00000000 );
Register * fir_mask = new AndRegister(fir, mask);
const BitString * bs = fir_mask->getBitString();

The getBitString function (defined by each register) provides access to
the BitString that manages each register's data.  In this example bs
will contain the result of fir & mask.

Change-Id: I497d997c1cc338c53cb04a827bf2f4aca6b781c9
Signed-off-by: Paul Greenwood <Paul.Greenwood@ibm.com>
diff --git a/test/simulator/meson.build b/test/simulator/meson.build
index e581b1a..87b675b 100644
--- a/test/simulator/meson.build
+++ b/test/simulator/meson.build
@@ -1,6 +1,7 @@
 sim_sources = [
     'hei_sim_main.cpp',
-    '../../src/isolator/hei_isolator.cpp'
+    '../../src/isolator/hei_isolator.cpp',
+    '../../src/util/hei_bit_string.cpp',
 ]
 
 sim = executable('simulator', sim_sources, \