Sign then Encrypt

Ok. Hopefully this addresses all the past feedback. I tried to simplify the PR and still get what we need in. This one is also a prerequisite for #840 as mentioned below. @Renelvon @gubatron take a look.
Note: This can be shortened to:
```python
except ValueError, TypeError:
```

If you also want to capture the exception in a separate variable, you should write it like this:
```python
except (ValueError, TypeError) as e:
```

Don't change it right now.