Rewrite CBreakPoints, fix MemCheck bugs

This does a few things:
 * Tries to respect the enabled/disabled status of a breakpoint properly (no UI yet.)
 * Removes the limit on max # of breakpoints.
 * Adds accessors for memchecks similar to breakpoints.
 * Makes breakpoints unique by (addr, temporary) and memchecks by (start, end).  This way you don't have an enabled and disabled breakpoint concurrently.
 * Fixes a bug I introduced earlier with the symbol map reading, oops.
 * Adds skeleton for conditional breakpoints, just needs the expression parser hooked up.
 * Makes memchecks work properly when "ignore invalid memory access" is off.
 * Makes memchecks also not break when you hit go while on one.

-[Unknown]