Use rvalue references and std::move()

This is a C++11 feature that allows for more efficient temporary
variable handling.  Essentially it allows me to avoid having to copy
entire vectors around.  It's a really neat new feature that I've never
tried before, so I figured I'd try it out and see what happens -- we
don't really have test cases yet, so it'll be difficult to determine
exactly how well it works.