reorg/cleanup bfdSession struct

- Started with adding bfdSubscribe and bfdUnsubscribe when it
  became clear that it was time to clean up the interface for
  specifying BFD sessions
- created a new struct for user to specify a BFD session and
  reorganized the internal session struct to accommodate it
- fixed the code to work with this new set of structs
organize source code; update Makefile
fix dependency generation
fix spelling error in enum value