Encode user_data in Base64 before sending it to boto

Boto tries to decode the user_data as Base64. If it fails, it will use
the field as clear-text. However, there are cases where a clear-text can
be interpreted as valid Base64 (if the padding is correct) and end up
being decoded as a binary string.
Merge branch 'master' into phantom0.2