Perform safety checks in create-stack-user.sh

This adds some safety checks to the stack user creation script.

This includes:
- Using set -e to exit early on errors
- Make sure the `functions` script exists
- Make sure the `stackrc` script exists
- Make sure STACK_USER is set before doing anything with it

Why is this necessary? I managed to run this with `sh`, STACK_USER did not get set, and the end result was a broken sudoers file. Not fun.