Improve client params

This PR does two things:

1. Adds a `hidden_params` field for Assignment and Test objects. This functions similar to the `hidden` field for TestCases -- staff members can use `hidden_params` for staff autograding. The `LockProtocol` will remove `hidden_params` so that students cannot see them.
2. Implements proper `cache` for DoctestCase. The `cache` for Assignments and Tests are lazily evaluated now.