I ended up switching to Bartender to fix the issue, but since I wanted to drop Bartender I needed to find a more permanent fix.
I think I did.
If anyone is having the same issue I was having please try this fix and let me know if it works for you as it did for me.
1: Set up your key bindings how ever you want them, take note of where a good amount of them are (write them down, take a screenshot....anything)
2: Log out, then exit out completely.
3: Open your World of Warcraft Directory (C:\Program Files\World of warcraft) where ever you have it located.
4: Open the WTF folder
5: Open the Account folder
6: Open the folder with the name of the account you are doing this for.
7: Open the folder with the name of the Server of the toon you are doing this for.
8: Open the folder with the name of the Toon you are doing this for.
9: ((There are two files in there named "Bindings-cache" one ends in '.wtf' and one ends in '.old' )) Open the ones labeled with '.wtf' first. Open the file with notepad. You will see a list of bindings that look like this:
bind Q MULTIACTIONBAR1BUTTON1
bind E MULTIACTIONBAR1BUTTON4
What that means is:
"Q" is bound to the First Action-bar, slot 1.*
"E" is bound to the First Action-bar, slot 4.*
*(this would be the first extra action-bar above the default one)
use the 'notes' you took earlier of your key bindings to ensure this is all correct to how you have it set up. (it should be, if not you; may be reading it wrong, may have opened the wrong file, or may have more problems than I did)
10: Assuming everything matches up how you had it Select EVERYTHING in this file and copy it.
11: Open the other Bindings-cache file (labeled with a '.old' on the end) if you glance at this you may notice that THESE bindings are the ones that it is switching you 'back' to each time you log out then back in.
12: Delete everything in the '.old' version and replace it with the copied version from the '.wtf' file in step 9.
13: Click file then save.
14: ???????.... Profit (just kidding, that is all you should be fixed now, what I THINK is happening is that for some reason WoW defaults back to the .old bindings file when you log in. Why it is even kept I do not know, it seems to be and older version of my key bindings (hence the .old I presume). I tried deleting it at first but it just re-created itself again. so instead I replaced the contents with my new bindings (from the .wtf folder) and I have been able to log out and in 10 times without my key bindings resetting at all.
hope it helps some one