[API] Changes to main shape API

hb_shape() now accepts a shaper_options and a shaper_list argument.
Both can be set to NULL to emulate previous API.  And in most situations
they are expected to be set to NULL.

hb_shape() also returns a boolean for now.  If shaper_list is NULL, the
return value can be ignored.

shaper_options is ignored for now, but otherwise it should be a
NULL-terminated list of strings.

shaper_list is a NULL-terminated list of strings.  Currently recognized
strings are "ot" for native OpenType Layout implementation, "uniscribe"
for the Uniscribe backend, and "fallback" for the non-complex backend
(that will be implemented shortly).  The fallback backend never fails.

The env var HB_SHAPER_LIST is also parsed and honored.  It's a
colon-separated list of shaper names.  The fallback shaper is invoked if
none of the env-listed shapers succeed.

New API hb_buffer_guess_properties() added.
diff --git a/src/Makefile.am b/src/Makefile.am
index c4f35e9..ff5a6d2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -18,6 +18,8 @@
 	hb-buffer-private.hh \
 	hb-buffer.cc \
 	hb-common.cc \
+	hb-fallback-shape-private.hh \
+	hb-fallback-shape.cc \
 	hb-font-private.hh \
 	hb-font.cc \
 	hb-mutex-private.hh \
@@ -30,6 +32,7 @@
 	hb-shape.cc \
 	hb-unicode-private.hh \
 	hb-unicode.cc \
+	hb-ot-tag.cc \
 	$(NULL)
 HBHEADERS = \
 	hb.h \
@@ -42,6 +45,11 @@
 	hb-version.h \
 	$(NULL)
 
+MAINTAINERCLEANFILES += \
+	$(srcdir)/hb-version.h \
+	$(NULL)
+
+if HAVE_OT
 HBSOURCES += \
 	hb-ot-layout.cc \
 	hb-ot-layout-common-private.hh \
@@ -62,7 +70,6 @@
 	hb-ot-shape-complex-private.hh \
 	hb-ot-shape-normalize.cc \
 	hb-ot-shape-private.hh \
-	hb-ot-tag.cc \
 	$(NULL)
 HBHEADERS += \
 	hb-ot.h \
@@ -70,10 +77,7 @@
 	hb-ot-shape.h \
 	hb-ot-tag.h \
 	$(NULL)
-
-MAINTAINERCLEANFILES += \
-	$(srcdir)/hb-version.h \
-	$(NULL)
+endif
 
 if HAVE_GLIB
 HBCFLAGS += $(GLIB_CFLAGS)