Jonahstanley/add more tests

Suggested Reviewers: @wedaly @jzoldak

In this commit, I have done the following

1.    Refactored the problems.py into problems.py and problems_setup.py
    The purpose of this being that problems.py was a very large file. Now only the steps are in problems.py whereas the information needed to create problems are in problems_setup. This way, it is much easier to see what is needed in adding new problems to the test suite.

2.    Added in ability to have metadata
    Before, it was not possible to have add problems in the test with metadata specified. Now, there are two main ways to add metadata. Either the problem itself in the problem dictionary can have a metadata key corresponding to a dictionary of metaday keys and values and/or the step can somehow specify the metadata. add_problem_to_course now takes in an optional third argument of metadata which is a dictionary of metadata keys and values.

3.    Added in testing for showing and hiding answers as well as problems with limited attempts
    Now that we can have metadata, these tests could be added.
    -- For showing and hiding answers, I check that I can click on a show answer button, the answer appears, there is now a hide answer button and when that is clicked, the answer disappears
    -- For limited attempts, I check that if there is 1 attempt, the final check button is there and when the answer is sent (if it is correct or incorrect) there is no option to reset the problem. If there is more than 1 attempt allowed, I check that the user is properly updated on how many chances they have left and once they are on the final guess, the button changes to final check and after that point there is no reset button

Both of these tests are slower due to needed to check for buttons that do not appear.

4.    Sped up some tests
    There were a few tests on lms that were running a bit slow: high-level-tabs, partners and checking ids. These were slow due to unnecessary repeated logic in the scenario. These were sped up by using step tables. Since most of these tests were checking to make sure something was on the page, the checks can be done all at once. Before, the entire scenario (adding a course, logging in, reloading the page, getting the page data) was repeated for each check.

5.    Quick changes to the cms test suites (there were steps with the same name that weren't used)

6.    Added my name to the author file

Hopefully, all of these tests will run nicely on the other machines. Also, hopefully the new scenarios and files are easy enough to read.