Utility functions to write manual parsers.
Parse a string potentially escaped with OCaml string
      conventions, or stop at 
stop_before character if it is not
      escaped.  Examples: 
      
      escapable_string ~stop_before:['='; '@']  "sdf\tsd\000 sdf fdsaf";;
      = ("sdf\tsd\000 sdf fdsaf", None, "")
      
      escapable_string ~stop_before:['='; '@']  "\"sdf\\tsd\\000\" sdf fdsaf";;
      = ("sdf\tsd\000", None, " sdf fdsa")
      escapable_string ~stop_before:['='; '@']  "\"sdf\\tsd\\000\" s=df @fdsaf";;
      = ("sdf\tsd\000", None, " s=df @fdsa")
      escapable_string ~stop_before:['='; '@']  "\"sdf\\tsd\\000\"@ s=df @fdsaf";;
      = ("sdf\tsd\000", Some '@', " s=df @fdsa")
      
      escapable_string ~stop_before:['='; '@']  "sdf\tsd\000 s=df @fdsaf";;
      = ("sdf\tsd\000 s", Some '=', "df @fdsa")
      escapable_string ~stop_before:['='; '@']  "sdf\tsd\000 sdf @fdsaf";;
      = ("sdf\tsd\000 sdf ", Some '@', "fdsa")