AArch32: Add essential Arch helpers

This patch adds the essential AArch32 architecture helpers
arch.h and arch_helpers.h and modifies `_types.h` to add AArch32
support.

A new build option `ARCH` is defined in the top level makefile to
enable the component makefiles to choose the right files based on the
Architecture it is being build for. Depending on this flag, either
`AARCH32` or `AARCH64` flag is defined by the Makefile. The default
value of `ARCH` flag is `aarch64`. The AArch32 build support will be
added in a later patch.

Change-Id: I405e5fac02db828a55cd25989b572b64cb005241
diff --git a/Makefile b/Makefile
index a68335b..eb593a7 100644
--- a/Makefile
+++ b/Makefile
@@ -45,6 +45,8 @@
 # Default values for build configurations
 ################################################################################
 
+# The Target build architecture.
+ARCH				:= aarch64
 # Build verbosity
 V				:= 0
 # Debug build
@@ -468,6 +470,12 @@
                 $(eval $(call add_define,PRELOADED_BL33_BASE))
         endif
 endif
+# Define the AARCH32/AARCH64 flag based on the ARCH flag
+ifeq (${ARCH},aarch32)
+        $(eval $(call add_define,AARCH32))
+else
+        $(eval $(call add_define,AARCH64))
+endif
 
 ################################################################################
 # Include BL specific makefiles