[LIBCLOUD-640] Add support for Softlayer DNS driver

*  Refactored SoftLayer connection, moved it to common, to be used by compute and dns driver
*  Added support for DNS driver methods
*  Unit tests for all methods

Driver has been tested a bit manually too and it seems to work. Looking for review/any comments

One thing missing is support for "update_zone" method as SoftLayer doesn't support so I don't really know how to tackle this problem?
Minor style and consistency things - can you please re-order the methods and put "private" methods at the end (https://libcloud.readthedocs.org/en/latest/development.html#function-and-method-ordering)?