defroute changes

- Never implemented defroute's :replace (whoops). Fixed
- Made defroute's :replace true by default...this is a sensible defaults
  thing: there's no point in defining a route that's the same as another
  route that exists just to have it added to the end of a list nobody
  will read. i think it really makes sense to just replace the existing
  route (based on method/resource). note that if the route by that
  resource/method combo doesn't exist, the new route will be appended to
  the end of the route list (upsert)
- add-route/upsert-route functions now return the *number of routes*
  instead of the entire route table. makes debugging much easier.

note that making :replace on by default is a somewhat breaking change,
but i feel it's necessary.