Move custom user controller into own file and add tests

Also moved some functional test boilerplate into a helpers module.
Add some missing __init__.py files