Reduce needed buffers

We actually do not need 2 buffers to rotate the generated passwords around,
we only need one. This simplifies the code a bit.
Rewrite replaceLikeSupergenpass()

supergenpass.com takes the output of md5/sha512 and pipes it through
plain base64. This base64 encoded string gets modified a little bit: '/'
becomes '8', '+' becomes '9' and the padding '=' becomes 'A'.

The first optimization is to do the char-swapping while base64-encoding:

  var sgpBase64 *base64.Encoding
  ...

  sgpBase64.Encode(pw, digest)

The 2nd optimization:  the last 2 bytes of either base64(md5(input))
or base64(sha512(input)) are always "==":

  sgpBase64.Encode(pw, digest)
  sgp.FixPadding(pw)

These 2 optimizations are the core of this commit, the rest is just some
reordering of code.