1. When doing a forward scan, a btree cursor should cache the previous key and use it if a prefix is required for the next key. This requires catching the case where the application sets the key in between cursor->next operations (just make that an error?)
2. On "cursor-walk" pages, don't bother creating the initial keys when we read the page into memory