Handle binary will payloads

see https://github.com/adamvr/MQTT.js/issues/221
You need to use [`Buffer.byteLength`](http://nodejs.org/api/buffer.html#buffer_class_method_buffer_bytelength_string_encoding) if it's a string, and `will.payload.length` if it's not. The problem are unicode chars, which are counted as 1 in string.length, but they are actually multibyte.