refactor: Use remote control service

Rather than attach a snapper instance to the scope. This allows for cleaner
sharing and provides easy programmatic access to the snapper object.