Added DexFileAsanRegistrar and necessary additions

This class was made so that sections of dex files
can be easily poisoned to check accesses to those sections.

In order to enable logging of reads to poisoned sections,
use art/tools/add_package_property.sh along with package
name on the device and art/tools/asan.sh.

Bug: 37754950
Test: export ART_DEX_FILE_ACCESS_TRACKING=true ; mm -j && mm -j
SANITIZE_TARGET=address SANITIZE_LITE=true test-art-host;

(cherry picked from commit ecfa103caf2ccead029bd0e1bfcee02601a0c212)

Change-Id: Ie57aa935b7f5f6854ba53d7740cc0d1547b40847
diff --git a/build/art.go b/build/art.go
index b33b565..9de2b05 100644
--- a/build/art.go
+++ b/build/art.go
@@ -170,12 +170,23 @@
 		}
 		Cflags  []string
 		Asflags []string
+		Sanitize struct {
+		  Recover []string
+		}
 	}
 
 	p := &props{}
 	p.Cflags, p.Asflags = globalFlags(ctx)
 	p.Target.Android.Cflags = deviceFlags(ctx)
 	p.Target.Host.Cflags = hostFlags(ctx)
+
+	if envTrue(ctx, "ART_DEX_FILE_ACCESS_TRACKING") {
+		p.Cflags = append(p.Cflags, "-DART_DEX_FILE_ACCESS_TRACKING")
+		p.Sanitize.Recover = []string {
+			"address",
+		}
+	}
+
 	ctx.AppendProperties(p)
 }