Always forward declare BranchKey as class

The clang compiler complained that BranchKey was forward declared as a struct but in its actual declaration it was a class.
Merge pull request #3567 from Dr15Jones/fowardDecBranchKeyAsClass

Clang fixes -- Always forward declare BranchKey as class