Introduce the notion of function addresses in Subzero.

Introduces the notion of a function address, to replace using LLVM
IR's Function class. Modifies Ice converter, and Subzero's bitcode
reader, to build function addresses.

BUG=None
R=jvoung@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/641193002
diff --git a/src/IceDefs.h b/src/IceDefs.h
index 29ed5d8..62665e7 100644
--- a/src/IceDefs.h
+++ b/src/IceDefs.h
@@ -26,7 +26,6 @@
 #include <set>
 #include <string>
 #include <vector>
-
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/BitVector.h"
 #include "llvm/ADT/SmallBitVector.h"
@@ -39,7 +38,9 @@
 class Cfg;
 class CfgNode;
 class Constant;
+class FunctionDeclaration;
 class GlobalContext;
+class GlobalDeclaration;
 class Inst;
 class InstPhi;
 class InstTarget;
@@ -48,6 +49,7 @@
 class Operand;
 class TargetLowering;
 class Variable;
+class VariableDeclaration;
 class VariablesMetadata;
 
 // TODO: Switch over to LLVM's ADT container classes.