force_unicode support for non-string types

Now force_unicode(1.0) will return u"1.0" for consistency and to avoid confusion
with the Django function of the same name
Fix field boosting, simplify _build_doc

* Ensure that numbers are converted to strings to avoid
  lxml choking when asked to serialize a number (in 2013!).
* Refactor logic to have a single code-path for both single and
  multi-value fields
* Refactor use **kwargs style so there's a single Element() create
  call