support for streaming send

These additions allow you to remove large buffer from your send code. In our implementation we b64 the data we're going to send, but want to do that on the fly to keep away from yet another buffer. Now we can calculate the amount of characters we intend to send, have pubsubclient send the appropriate header and allow us to finish up!

```cpp
//max 51 was arbitrary to come under the wifi shield limit
int len = b64::encodeLength(stream.available() > 51 ? 51 : stream.available());

mqtt.publishHeader("topic", len, false);

//encode from our stream object directly into the client
b64::encode(stream, client, len);
```