Add some ParseBuffer utilities
diff --git a/src/parse.rs b/src/parse.rs
index efd7726..1ad1e9b 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -11,6 +11,7 @@
 
 use buffer::Cursor;
 use error;
+use synom::PResult;
 
 pub use error::{Error, Result};
 pub use lookahead::{Lookahead1, Peek};
@@ -102,6 +103,14 @@
         T::parse(self)
     }
 
+    pub fn peek<T: Peek>(&self, token: T) -> bool {
+        self.lookahead1().peek(token)
+    }
+
+    pub fn fork(&self) -> Self {
+        self.clone()
+    }
+
     // Not public API.
     #[doc(hidden)]
     pub fn step_cursor<F, R>(&self, function: F) -> Result<R>
@@ -124,6 +133,12 @@
 
     // Not public API.
     #[doc(hidden)]
+    pub fn parse_synom<T>(&self, parse: fn(Cursor) -> PResult<T>) -> Result<T> {
+        self.step_cursor(|step| parse(step.cursor))
+    }
+
+    // Not public API.
+    #[doc(hidden)]
     pub fn get_unexpected(&self) -> Rc<Cell<Option<Span>>> {
         self.unexpected.clone()
     }