This patch creates a new context for every function definition we enter. Currently we do not push and pop on these, usually working off of the global context record added in the Sema constructor, which never gets popped.
Ideally this will be one of the first patches for pushing and popping records so that we operate less off the global Sema record. I tried doing this as @rsmith recommends in https://reviews.llvm.org/D49511?id=160892#inline-451745, but ended up running into many issues that would be better addressed accross multiple patches.
Parent of https://reviews.llvm.org/D49511 where we would like to check for noderef usage on each context.