Implement in-place rfft! and irfft!

This implements support for in-place real-to-complex and complex-to-real transforms. Since the type is changing, this defines a new object that provides two views (one real and one complex) on a single memory buffer.

CC @stevengj