Portlets, refactor bulksearch

Code can find all static portlets,
no regex and no integration in ui yet
Preparation to allow for effective portlet search
Extend bulksearch to search portlets too

Now I could remove the portlet utility
Add search fol all languages
Prepare tests for replacements
Adapt bulkReplace to new abstractions.

Needs some heavy cleanups, commit contains too many changes too, but
won't untangle this.
Implement the actual replacement in portlets

This needs some serious refactoring, next commit
Refactoring

move the looping other every change into the result
object. This makes the replace view method a bit easier
to understand
Cleanup warnings
Update ignores
Fix a bug in portlet replacement

Also, I somehow totally screwed my commit history,
Not sure if I broke something accidentally
Repair template

The option was removed, accidentally
Add change notes
Update documentation
Add screenshot here
Fix issue with umlauts

Portlets store their data as unicode, rich text fields as text
Now there is a test case for it and a fix in form of using adapters
for portlets that transparently convert everything forth and back
Remove unused import
Fix off by one error

+ regression test and a small fix to avoid comparison errors
Clean up unicode handling

Now, all text input gets immediately converted to unicode
and everything is used in unicode versions.
Since the old bulkmodify adapters weren't explicit in
wether they work with unicode or string objects, I made
it explicit and adapters now must implement access with
both unicode and utf-8 encoded versions of the same text
the code ended up only using the utf-8 version.
When you look veery closely at the previous version of this
code you might be able to spot that I did offset calculations
looking at the length difference between an unicode object
and an utf-8 encoded string. This creates havoc as soon as
you use non ascii chars. I added a regression test for it.
If you want to see what I mean, modify rt/bulkmodify/browser/view.py:115
so that one of the two variables gets utf-8 encoded and you
will trigger the failure in the new regression test.
Complete changelogs
Merge pull request #7 from starzel/portlets

Merging portlets work (will fix unicode path related issues later)