Introduce IR support for MLIRContext, primitive types, function types, and
vector types.

tensors and memref types are still TODO, and would be a good starter project
for someone.

PiperOrigin-RevId: 201782748
diff --git a/include/mlir/IR/Function.h b/include/mlir/IR/Function.h
index 72f077c..7eaf406 100644
--- a/include/mlir/IR/Function.h
+++ b/include/mlir/IR/Function.h
@@ -27,12 +27,14 @@
 #include "mlir/Support/LLVM.h"
 
 namespace mlir {
+  class FunctionType;
+
   /// This is the base class for all of the MLIR function types
   class Function {
     std::string name;
-    // TODO: type and lots of other stuff.
+    FunctionType *const type;
   public:
-    explicit Function(StringRef name);
+    explicit Function(StringRef name, FunctionType *type);
 
     void print(raw_ostream &os);
     void dump();