[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/hb-shape.h b/src/hb-shape.h
index 39383af..b2193f7 100644
--- a/src/hb-shape.h
+++ b/src/hb-shape.h
@@ -41,11 +41,14 @@
   unsigned int  end;
 } hb_feature_t;
 
-void
-hb_shape (hb_font_t          *font,
-	  hb_buffer_t        *buffer,
-	  const hb_feature_t *features,
-	  unsigned int        num_features);
+
+hb_bool_t
+hb_shape (hb_font_t           *font,
+	  hb_buffer_t         *buffer,
+	  const hb_feature_t  *features,
+	  unsigned int         num_features,
+	  const char          *shaper_options,
+	  const char         **shaper_list);
 
 
 HB_END_DECLS