'Returns all answers a user (or all users, when user=None) has given to an instance of a SurveyForm
Return is a nested dict which are simple name/value pairs with an outer key which is the
user id. For example (where \'field3\' is an optional field):
results = {
\'1\': {
\'field1\': \'value1\',
\'field2\': \'value2\',
\'2\': {
\'field1\': \'value3\',
\'field2\': \'value4\',
\'field3\': \'value5\',
limit_num_users is to prevent an unintentional huge, in-memory dictionary.'

@classmethod
def get_answers(cls, form, user=None, limit_num_users=10000):

    if user:
        answers = SurveyAnswer.objects.filter(form=form, user=user)
    else:
        answers = SurveyAnswer.objects.filter(form=form)
    results = OrderedDict()
    num_users = 0
    for answer in answers:
        user_id = answer.user.id
        if ((user_id not in results) and (num_users < limit_num_users)):
            results[user_id] = OrderedDict()
            num_users = (num_users + 1)
        if (user_id in results):
            results[user_id][answer.field_name] = answer.field_value
    return results
