modify the models

revise some fields of theater and movie, using string for datetime
instead of DateTime object.

change fetchers in factory to fetcherClasses

Add DateUtil for formatting datetime
Implement DBFetcher and DBReserver

fetched data will be reserved in local database for later use.
each request will try to load database first, if failed, it fetch and
parse data from source
Implement movie DB reserver and fetcher

reserve movie information and showtime to database, and fetcher them
instead of parse source
refs #2
html_entity_decode movie name

using function to html_entity_decode movie name when fetching from
google
simple loading timer

add timer to measure loading time for fetch and display
Generate query string for movielist

generate query string for movie info and showtimes and send once to
reduce database connection for each movie.
It really saved time from 3 seconds to 0.5 seconds
refs #5
Generate query string for theaterlist

Combine all theaters info to one insert query and send to database once
to save time.
refs #5
Plugable Reserver

add ENABLE_RESERVATION to toggle local reserve;
BogusReserver implement empty methods to prevent server doing anything;
ReserverFactory give out correctly reserver base on config, and save
singleton in map
change zipcode to area for theater fetcher

in many cases we fetch theater not only with zipcode but also with
other sign like city name, hence change zipcode to area, and in
Database it is search_sign.
However for basic version, the seach in web form is till only accept
zipcode
remove testing code

remove "echo $url", clear movies from DB($movies = array()) in in
fetcher
json_decode info to associated array instead of stdClass
change methods in google fetcher

no date on theater link, all link has 'near=usa' parameter in url.
add source nad link in object fetch method, not static fetch method