Make HyObject.replace more resilient

This makes it work on quoted objects
Add macroexpand to core/language.hy
Added a simple test for macroexpand
Added documentation for macroexpand
Added macroexpand-1
Fixed --name-- scope problem using ugly inspect code
meth wasn't accepting correctly its parameters
Now also accepts more than 1 statement in the code part of the macro
refactored to use only 1 codebase (no more route != route-with-macros)
Fixed docstring
Added meth tests by mocking a Flask app
Fix apply with method calls

Apply didn't work on method calls (i.e. `(apply .foo [bar]) broke).
This slipped through because there were no tests of this behavior. I noticed
it while trying to merge the `meth` fixes.
Add anaphoric if statement
Add ap-if docs.
Only call macroexpand when needed

We only need to call macroexpand on HyExpressions,
as this is already guarded in macroexpand_1. This
saves us a few funcalls.
contrib/anaphoric: More anaphoric macros added

* hy/contrib/anaphoric.hy: The following anaphoric macros have been
  added
  `ap-reject` : Opposite of ap-filter, yields the elements when a `pred`
  evaluates to false
  `ap-dotimes` : Execute body forms (possibly for side-effects) n times
  with `it` bound from 0 to n-1
  `ap-first` : return the first element that passes predicate
  `ap-last`  : return the last element that passes predicate
  `ap-reduce`: anaphoric form of reduce that allows `acc` and `it` to
  create a function that is applied over the list

* docs/contrib/anaphoric.rst: updated docs to reflect these changes

* tests/__init__.py: updated to explicitly include tests for anaphoric
  macros
Merge branch 'master' into paultag/ana/if

Conflicts:
	hy/contrib/anaphoric.hy
Merge branch 'paultag/ana/if' of github.com:paultag/hy into paultag/ana/if
Merge branch 'olasd:feature/only-macroexpand-when-needed'
Merge pull request #391 from olasd/bugfix/apply-method-call

Fix apply with method calls
add nil as synonym for None
Add profiling macros