ensured invalid If-Modified-Since header is handled gracefully
simplified handling of invalid HTTP timestamps

not particularly elegant either, but at least it's better encapsulated
Merge pull request #50 from FND/httpostel

ensured invalid If-Modified-Since header is handled gracefully
release 1.2.67
refactored last-modified cache handling

still not perfectly DRY though: the caller should not have to determine
`last_modified_string`, and ETag handling is duplicated as well
Remove unused import
ensured Makefile's phony targets list is comprehensive
moved HTTPExceptor plus exceptions into separate library

https://github.com/tiddlyweb/httpexceptor
fix #53 non-existent serialization extension no longer returns default

This may not be the best fix, but it has the least impact in terms
of changes (despite the size of the diff).

The conceptual change here is that something which is a "collection"
has a strict name "bags", "recipes", "tiddlers", "revisions" and
thus anything '.*' at the end _must_ be an extension and if that
extension is not a member of `extension_types` we should 415.

To accomplish this, when calling tiddlyweb.web.util:get_serialize_type
we pass `collections=True` to engage different code.

This revealed a bug in extension handling for revisions which was
fixed by adding yet _more_ cyclical complexity to `_determine_tiddler`
a method that's ripe for refactoring (now that we have a few years
of use).

This commit brings about a change in behavior, so will be part of
the 1.3.x release jump. The change is that a "bad" extension is
treated as a bad one, on collections, even in the presence of a
valid accept header. In the past we'd let the accept header take
over. This leads to confusion, as described in #53, thus the change.
Make new flag on _determine_tiddler a bit more clear.

This is to help @fnd be a little more calm.
Remove duplication prior to calling list_entities

This is part of slow migration towards making more and more
of bag and recipe handling the same, as there's lots of
duplication.
pylint driven whitespace fix
Cover the fix for issue #53 for searches
Extract the decomposable parts out of _determine_tiddler

This will hopefully make it a bit more clear. Or at least
provide some easier options for tidy ups.
fix #29 manage type properly when it is not set

This only comes into play on text stores. Since most active
bugs come from tiddlyspace (which doesn't use the text store)
the impact has been light. This clears it up for new tiddlers
in those instances that are using the text store.
Implement a repl for #51

This is on a branch for now as it is wacky and wild and in need
of a tuneup, but other than that it is pretty cool. Merry Christmas
@FND.

```
(TiddlyWebREPL)
>>> sj = Serializer('json', environ)
>>> x = Tiddler('foobar', 'cow')
>>> x.text = 'hello'
>>> x.tags = ['foo', 'cow']
>>> sj.object = x
>>> '%s' % sj
'{"created": "", "fields": {}, "creator": null, "recipe": null, "modified": "20121210232622", "uri": "http://0.0.0.0:8080/bags/cow/tiddlers/foobar", "bag": "cow", "text": "hello", "title": "foobar", "permissions": [], "modifier": null, "type": null, "tags": ["foo", "cow"], "revision": 0}'
>>>
```
Correct handling of tabs not for completion.

If there is no text yet, that is an initial tab on the line,
then let us indent. This is required for being able to write
loops and other indented constructs.
Add control, util and web.util as web to interact's context

For more funz.
Add history file support to `twanager interact`

This just uses a .twihistory file in the instance.

This should allow for people to play interesting cames like
symlinking to a .twihistory file somewhere else, if they want to.
Make the README a bit more up to date.

Also improve the RST, and in general just try to make it
slightly more useful in a way that is aligned with how we
think about TiddlyWeb today.