Add support for kwargs in function calls
Support backslash escape of grammar characters
Update to ext-js 3.4.0

Clean upgrade to 3.4.0 with no real changes involved. Replaced full
extjs install with a trimdown of only the essential. Moved from the
examples/ directory are ux/DataViewTransition.js and the fam icon set
Fix grammar's matchEnum to allow prefix and suffix

This was broken: abc.def.g{h,i,j}k
as well as path components with two enums between dots
added a weighted average function
missed keymap definition for new function
enable get all metrics in CLUSTER_SERVERS
added fallback to cairocffi if pycairo is not installed. cairocffi is installable through pip
fixing change graph via django admin interface.

With Django 1.4 installed, if I try to edit a saved graph via admin interface I get Exception.

Most probably this is the case: https://code.djangoproject.com/ticket/17971

The fix is easy: add required class to MIDDLEWARE_CLASSES explicitly.

-------
Environment:


Request Method: POST
Request URL: http://192.168.97.126/admin/account/mygraph/4/

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('graphite.metrics',
 'graphite.render',
 'graphite.cli',
 'graphite.browser',
 'graphite.composer',
 'graphite.account',
 'graphite.dashboard',
 'graphite.whitelist',
 'graphite.events',
 'django.contrib.auth',
 'django.contrib.sessions',
 'django.contrib.admin',
 'django.contrib.contenttypes',
 'tagging')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.middleware.gzip.GZipMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware')


Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/options.py" in wrapper
  366.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
  91.                     response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  89.         response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner
  196.             return view(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper
  25.             return bound_func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
  91.                     response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func
  21.                 return func(self, *args2, **kwargs2)
File "/usr/lib/python2.7/dist-packages/django/db/transaction.py" in inner
  209.                 return func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/options.py" in change_view
  1058.                 return self.response_change(request, new_object)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/options.py" in response_change
  842.             self.message_user(request, msg)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/options.py" in message_user
  696.         messages.info(request, message)
File "/usr/lib/python2.7/dist-packages/django/contrib/messages/api.py" in info
  78.                 fail_silently=fail_silently)
File "/usr/lib/python2.7/dist-packages/django/contrib/messages/api.py" in add_message
  22.         raise MessageFailure('You cannot add messages without installing '

Exception Type: MessageFailure at /admin/account/mygraph/4/
Exception Value: You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware
---------
Merge pull request #345 from anatolijd/master

editing a saved graph via admin interface does not work with Django 1.4.
Merge pull request #280 from mleinart/extjs_3_4

Update to ext-js 3.4.0
add www.douban.com to who-is-using
Merge pull request #341 from anotherthomas/master

Fall back to cairocffi if pycairo is not installed
add new function offsetToZero
more documentation and an example for offsetToZero
add graphite-observer to tools.rst
Merge pull request #347 from mprovost/master

new function offsetToZero
Merge pull request #348 from huoxy/master

add graphite-observer to tools.rst
update urls for structured_metrics and graph-explorer
Fix functions._getPercentile by ignoring None values