More work.

- Adding identifiers to IBlock and ITransaction... not sure how long
these will stick, but they're convenient for now.
- Adding support for storing and retrieving blocks and transactions.
- Adding a rudimentary implementation of block / transaction storage.
--- This is terrible.  The point is that some actual implementations may
be terrible, but your actual implementations will be allowed to replace
mine.
- Removing the writable aspect of hash algorithm stores.
- Using immutable collections in more places.
- Tweaking the IValueSource hierarchy as I continue to learn more about
Bitcoin.
- Changing IBlock to again no longer have a reference to the previous
and next blocks.
- Reworking MEF exports.  Base classes now handle automatic read-only
exports for their subclasses.
--- Read/write subclasses will still have to export the read/write
interface if they support writing.
--- This will probably change again later, I'm just getting really
nervous about sitting on all this code without checking any of it in.
- Adding a rudimentary executable that just does MEF composition and
demonstrates that some of this code might actually work without having
to run the unit tests.