Added a level of indirection to Transaction (FTSE)

Its been long since I haven't written a long commit message. It seems
these are a part of documentation (kind-of), so here I go:
The problem of what to do in case of a http redirect from a http: url to
a https: url (or vice versa) has long plagued me. Yesterday I read about
the 'fundamental theorem of sofware engineering', which says that any
problem can be solved by adding a level of indirection (except one ;)).
So I have the epiphany and add the proverbial level of indirection. Its
very important because if a redirect happens to or from a ssl protocol
from a non-ssl protocol, then the type of Transaction<> has to be
changed. It seems there's no way of changing the type of an object
without changing its location. And the aggregator, which is a higher
authority which maintains the downloading process, contains an address
of the Transaction object. And there's no way of changing THAT without
massively tightening the coupling between the aggregator [still unborn]
and the Transaction classes. FTSE kicks ass!
Broken; need study of SSL