[Reviewer Andy] Sproutlet support - DO NOT MERGE!!!

Andy

As discussed, this pull request is for you to review the remaining unreviewed code changes for Sproutlets. The main bits should need to review are

-  the updates to BasicProxy to make it suitable as a base for SproutletProxy (basicproxy.cpp, basicproxy.h and some corequisite changes to icscfproxy.cpp and icscfproxy.h to keep it building/working)
-  the SproutletProxy class and anciliaries (sproutletproxy.cpp + sproutletproxy.h)
-  the SCSCFSproutlet class (scscfsproutlet.cpp/scscfsproutlet.h and some minor tweaks to aschain.cpp and aschain.h)
-  a few miscellaneous updates to PJUtils - mostly to make cloning of messages sane.



Mike
This code (and you do it later in SproutletProxy) seems a waste of time (and potentially a bad idea performance-wise).  `std::map`/`std::unordered_map` automatically resize if needed when a new element is added and may chose to pre-emptively resize in steps of larger than 1 to prevent repeated reshuffling.  Do you have a reason for doing this manually?