make sure to initialize pointer
Add base classes for things that take particles as arguments

To handle inputs and outputs through the base classes rather than through macros. Also clean up a few deprecated uses while we are at it.