rpn list: pass by value instead of by pointer

made use of move constructor and move assignment to efficiently return
the rpn lists instance by value from functions instead of by pointer:
- return value of translator is moved to return value to delete member
- translator output member changed from pointer to regular variable
- return value of decoder, which is now a local variable
- return value of tester translate input
- rpn lists are now passed as reference to users (encode, recreate)
- receivers of rpn lists no longer need to delete the rpn list