whitespace fixes
patches nested_set to add tree rebuilding methods that are not using
save

The original nested_set implementation uses save on each node (issue,
project). With the callbacks defined on issues, this can lead to stale
object errors when an issues has been loaded by the rebuilding method
but changed by a callback.

The rebuild_silently! method can also take root nodes as their
parameter. With such provided the method will only fix their trees.

This is build upon by the selectively_rebuild_silently! method which
first looks for invalid nodes, determines their root node and then calls
rebuild_silently! with those root nodes. This should speed up rebuilding
on large trees.

Additionally, methods where added as a byproduct to retreive nodes
who's tree attributes are invalid.
overrides awesome_nested_set methods for issues to allow for fixing the
root_id

The root_id provides the scope for a nested_set tree. The implicit
constraint of the Issue implementation is that there is but one tree per
scope. Or in other words, the root_id is part of the nested_set
attributes for an issue.

This is not the case for Project, which is also using nested_set but
does not set a scope. Project's are ordered that way.

The root_id should always point to the root of an issue tree.
awesome_nested_set only looks for nodes without a parent in the provided
scope to determine root nodes. For example, if the root_id of an issue
should point to the node itself, this issue is considered to be a root
node. This is regardless of the value of the parent_id. For such a node,
nested_set methods will provide wrong issues when queried for root,
ancestors and similar methods.

Fixing a missconfigured root_id attribute is achived by traversing up
the parent chain (parent_id) till an issue without a parent is found.
The parent_id attribute is considered to be correct.

The root_id is not really necessary for awesome_nested_set to work. But
employing the field should be beneficial performancewise. Updating an
issue tree requires less nodes' left/right attribute to be altered when
the forrest is scoped.
applies proper css class to calendar filter header
removes css rules no longer needed
refactors querying for assignable users

It is still not as fast as it should be. Even after refactoring it takes 1-2 seconds before the answer is calculated (used to be 5-6).
removes outdated comment
adds a journaled_class method

That way we do not have to load the class or do some magic parsing names when wanting to now what is journaled.
adds a very simple cache to cache arbitrary model objects

yields a block with object_klass and object_id to be able to cope
with not finding an object.
allows journal formatters to receive options and uses it to be able to
pass an object cache

For now it is only used by the NamedAssociation Formatter. The formatter
requires to read a lot of model objects.
moves issue tree row rendering into helper

The partial was using content_tag methods anyway so readability was not improved by using a partial vs. a helper. Additionally the partial contained a lot of non view related ruby code. That and the fact that partials are expensive lead to moving it into a helper.
switches to join concatenation (as it was faster in my test)
uses a journal cache to render the history

See the comment for some details.

We should think about moving this into a different place like the
controller or the User.current. Doing so would provide us with a request
cache that can be reused for multiple purposes.

However this might cause serious memory issues.
removes explicit casting of changes to yaml

Journal changes are serialized anyway. This double serialization worked fine until a security risk was identified and a fix for that was created which prevents already serialized data to be serialized again (rails 2.3.17)
Merge pull request #31 from opf/fix/wiki_journals_after_2.3.17

removes explicit casting of changes to yaml
prevents exploiting implicit mysql typecasting

This should prevent an attacker from issuing a request where he sends a token param casted to integer. MySql would cast the value attribute of Token to integer which is either the integer at the beginning of the value or, in absence of such, 0.
Merge pull request #32 from opf/fix/token_mysql_vulnerability

prevents exploiting implicit mysql typecasting
added class to container element so all styles will be used
Merge pull request #23 from opf/cleanup/css

Cleanup/css for filter fieldset
Merge pull request #25 from opf/perf/journal_caching

Perf/journal caching