Code clean up and restructing

This commit contains a large number of changes that can be summarized
in the following 3 categories:

1) Introduces a new cache coherence mechanism

2) Clean-up sampling methods

3) Add support for power model for in-order core