More code path test coverage

Added test coverage for untested code paths (mostly error handling) revealed by 'go tool cover'.
I'm not sure about this patching. I try to avoid it when possible. There's only one thing in macaroons which needs randomness, and that's AddThirdPartyCaveat. How about defining an (unexported) method on Macaroon, e.g.

    func (m *Macaroon) addThirdPartyCaveatWithRand(rootKey []byte, caveatId string, loc string, randReader io.Reader) error

then, in export_test.go, define:
    var AddThirdPartyCaveatWithRand = (*Macaroon).addThirdPartyCaveatWithRand

You'd also need to change encrypt and newNonce to
take the io.Reader as an explicit argument (but that's probably
a good thing).

Then the external and internal tests can test without patching the global rand.Reader variable at all.