unserialize() has same side-effects as __construct()
added calculate_last_modified

borrowed from my own personal webpage
Model serializes better now

can be used to generate weak ETags
simplified is_modified
better TemplateEngine serialization

fixed attribute order => more reliable weak ETags