lispy.el (lispy-slurp): now works for subwords

* lispy.el (lispy-slurp): If a subword is marked, extend region by
  another subword.

* lispy-test.el (lispy-slurp): Add test.
lispy.el (lispy-barf): now works for subwords

* lispy.el (lispy-barf): If only a symbol is marked, try to shrink the
  region by one subword.

* lispy-test.el (lispy-barf): Add test.
lispy.el (lispy-slurp): improve

* lispy.el (lispy-dotimes): New macro.
  (lispy--sub-slurp-forward): New function.
  (lispy--sub-slurp-backward): New function.
  (lispy-slurp): Improve, now should return amount of times moved.

* lispy-test.el (lispy--sub-slurp-forward): Add test.
  (lispy--sub-slurp-backward): Add test.
  (lispy-slurp): Update test.
lispy.el (lispy-down): also works for sub-words

* lispy.el (lispy-down): When subword is selected, move the region
  down by arg words.
  (lispy-up): When subword is selected, move the region up by arg words.
  (lispy-slurp): Improve.
  (lispy-barf): Improve.

* lispy-test.el (lispy-down): Add test.
  (lispy-up): Add test.
lispy.el (lispy-beginning-of-defun): improve
lispy.el (lispy-slurp): improve