Formatting

Indentation should use 4 spaces consistently. No need to return without anything, a function returns without with None (same behavior).

Did not change some odd things I notices, like property registration inside of operators - this should only be done in register(), or a function that is called from there. 

Not sure about the use of globals, and if it's reliable to get paths via bpy.utils in global scope (is executed on load of the file). To avoid the "global" keyword, you can also use a class with static members:

class G:
    global_var1 = "foobar"

print(G.global_var1)

What is the purpose of @persistent if you don't use it for an app handler callback? (load_settings() it called directly in register()).