Added load_ssh_public_key to load OpenSSH public keys (RSA support only)

As far as I can tell, there isn't currently a way to import OpenSSH (RFC 4253) formatted RSA public keys into an RSAPublicKey in cryptography. This commit adds that functionality.

Other Python cryptography libraries (notably PyCrypto) provide this sort of functionality and at least one library that I'd like to see ported to cryptography relies on that functionality.

This is my first-time contributing to cryptography. Your feedback would be very much appreciated! Thanks!
I think writing it as:

```
e, rest = _read_mpint(data)
n, rest = _read_mpint(rest)
if rest:
    raise Exception
```

is a pretty good way to expression it.

On Sat Dec 13 2014 at 9:07:14 PM Mark Adams <notifications@github.com>
wrote:

> In src/cryptography/hazmat/primitives/serialization.py
> <https://github.com/pyca/cryptography/pull/1517#discussion-diff-21793927>:
>
> > +    return _load_ssh_rsa_public_key(data, backend)
> > +
> > +
> > +def _load_ssh_rsa_public_key(data, backend):
> > +    if not data.startswith(b'ssh-rsa '):
> > +        raise ValueError('SSH-formatted RSA keys must begin with ssh-rsa')
> > +
> > +    parts = data.split(b' ')
> > +    data = base64.b64decode(parts[1])
> > +
> > +    cert_data = []
> > +
> > +    while len(data) > 0:
> > +        str_len = struct.unpack('>I', data[0:4])[0]
> > +        cert_data.append(data[4:4 + str_len])
> > +        data = data[4 + str_len:]
>
> Good points.
>
> So, the RFC says mpint is a string and a string is a uint32 length
> followed by that number of bytes. What do you think about creating a
> _read_str_list function that parses all of the string data out of the
> input and returns back a list of the data partitions of each string? It
> would then be very easy to check the length of the list returned to verify
> the expected number of strings is correct and also throw exceptions if the
> lengths don't add up to the size of the data.
>
> In addition, the existing _bytes_to_int could be renamed to
> _mpint_data_to_int with no additional changes.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/pyca/cryptography/pull/1517/files#r21793927>.
>