Stream support for large packets

Hi Nick, good to meet you at thingmonk this week. Here's the code that I pulled together during the hack day which I've now tested.

This adds support for passing a *Stream object in the constructor which is then used for writing out MQTTPUBLISH packets. This allows for writing to any storage which inherits from Stream - SRAM, SD Card etc so that the Arduino can take up to the full MQTT message size.

Let me know if there's anything you'd like to see done differently.

-Mark