1)  (AJC) In the movie class, I chose to represent the genres as flags in a bitfield.
    This seemed like a clever idea, but caused more of a headache in the implementation of the iteration code.
    I also considered representing them as a vector of integer values.

    Another choice that I made was to store the movies in a map, instead of a vector.  I made
    this decision because if a movie had been absent in the data file, I could have had to
    account for the missing movie.  In a map, the iterator can account for missing movies,
    and is a sorted structure with no effort on my part.

    (JJZ) In the User class:

    I decided to make all the reviews for a user a map instead of a vector.
    Map was used because the implication in getting a review of a certain movie and whether it exist or not is much easier vs a vector.
    Map also prevents duplicate items and its running time for searching is O(log(n)) vs a vector which has O(n).


    The maps and vector within user class was made public vs private. I felt that our User class was more of a data storage,
    and iterating over vectors/maps is much easier when that vector/map is made public and can be accessed in the client code.


    In the Userbase class:


    We decided to compute the averages in the Userbase. This allowed us to separate Userbase and Moviebase class and only use them in association in the client file.
    This prevented multiple implementations of the same class allowing less memory to be used.

2)  Creating the averages for each genre runs in o(M*U*R) time because a break in getMovieAvgRating stops a loop before worst time
    Creating the averages for each genre per user runs in O(UR) time
    Creating the top50 lists takes theta(U^2 * M * R) time
