Membership Model

Having a membership model between user and teams they are a member of
allows us to easily support multiple team memberships per user moving
forward. It also allows us to set permission flags on on the membership
itself giving us more fine grained permission control.