Simplify a test for WT_BTREE_BULK, if the flag is set, we're done.
Don't use S2C() where we already have a local variable.
Simplify bulk-load flags vs. eviction, make it bulk-load's problem,
not eviction's.

Eviction doesn't look at files that aren't open (WT_DHANDLE_OPEN not
set), which I believe means WT_BTREE.root.page should never be NULL.
Further, eviction shouldn't know anything about bulk-load, remove the
bulk-load test, we'll use the WT_BTREE_NO_EVICTION instead.

Change the btree open function to set WT_BTREE_NO_EVICTION on an empty
object, at the same time we set the "bulk load is possible" flag.  As
soon as a row is inserted in the object, the bulk-load flag is turned
off, change the object's eviction status at the same time.

Change the cache-full check to skip checking the bulk-load flag, all
that needs checking is the eviction flag.

Minor paranoia change: don't let eviction be configured on the metadata
file.
Have LSM clear the bulk_load_ok flag for the primary, otherwise the btree layer will override the "no eviction" flag.
Split out HyperLevelDB stubs into a separate file, with comments describing what the methods are supposed to do.

--HG--
rename : api/leveldb/dummy.cc => api/leveldb/hyper_wt.cc
Merge pull request #1118 from wiredtiger/bulk-checkpoint

Bulk checkpoint changes
Fix a bug when packing structures that include the packed size.

refs #1104
Merge pull request #1119 from wiredtiger/packed-size-adjust

Fix a bug when packing structures that include the packed size.
Use __wt_bt_cache_op to flush the cache rather than __wt_checkpoint_close
(no real change, just using the underlying function directly).
Rename __wt_bt_cache_XXX functions to be __wt_cache_XXX to match the
rest of the cache functions.
KNF
Some minor code-shuffling in the leaf page row-search code to
(hopefully) make it easier to follow, and match the internal
page binary loop.  I doubt this will speed things up, although
it should give the compiler slightly better information.
Don't call the insert list search routine unless there's an insert list
to search, it's a wasted function call in a common path.
Inline the fast-path insert-list append code and only call it when doing
a tree search, not when fixing up a cursor movement.

Rework the "appending" key so it only applies when appending to the page
as opposed to appending to any insert list (hopefully avoiding comparisons
both on leaf and internal pages where the comparison is unlikely to succeed).
Add a comment explaining the WT_BTREE.appending behavior.
Use "ins" instead of "ret_ins", it doesn't add any additional information.
Remove a comment that no longer applies (and even lint realizes it now).
Do the fast-append test before we search the leaf page.

Now that the fast-append search code is inlined, we shouldn't need to
optmize out the check that an insert list exists.
Move connection config out to a macro.
Rename __cursor_search_clear __cursor_pos_clear; it's the code that
clears a cursor's location, and is no longer unique to the search
functions.

Change __cursor_error_resolve cursor error resolution to clear the
cursor's location even if we see a failure from the cursor "leave"
function (probably a bad return from releasing a page), keeping the
cursor's location isn't likely to make anything better.

sename __cursor_error_resolve to __cursor_reset, it's a combination of
"leave the API" and "clear the cursor's location"; now that it clears
the cursor location regardless of the return from the cursor "leave"
function, we can call it from the WT_CURSOR.reset code, they're the
same.