Made scoremanager more cross-version compatible. NOTE.

NOTE: The behavior of exec has changed between Python 2 and 3.

In Python 2, a string containing Python assignment syntax could be exec()'d to
place that assignment into the local namespace:

    def test():
        foo = None
        string = 'foo = 23'
        exec(string)
        assert foo == 23

In Python 3, exec()'ing a string or file will *not* change the local namespace.
The solution is to provide a dummy local namespace as a dictionary to the
exec() call and then fetch out the assigned values by hand:

    def test():
        foo = None
        string = 'foo = 23'
        local_dict = {}
        exec(string, globals(), local_dict)
        foo = local_dict.get('foo')
        assert foo == 23

The second example above works in both Python 2 and 3. All exec() statements in
the scoremanager codebase should be rewritten along these lines to be
cross-version compatible.