Add a SMIE rule function for "def". Fixes #38.

This function [now explicitly sets](https://github.com/mattdeboard/emacs-elixir/commit/ab17d66a3b44910e0e9c9e9b78514155f56a85a5) the indentation level of lines beginning with "def" to 2. Formerly, this token returned `nil` (the default, because there was no matching pattern in `elixir-smie-rules`), which caused SMIE to call `smie-indent-after-keyword` to calculate the indentation. This function was returning the incorrect value which was causing the inappropriate alignment to the `.`. 

I have been working on this for quite a long time, many months. I was very undisciplined about staying focused on just #38. I hate big kludgy pull requests, but due to the fact I had to learn more about BNF grammars & emacs lisp than I ever thought I would this bug fix took on a life of its own. Half out of necessity.

In addition to fixing that, this PR also:

1. Straightens out all tests. If a feature is broken in elixir-mode, and the test fails because of that test, I marked it as an expected failure. I added a comment to the top of the indentation tests module explaining my intent. This made running the tests far less confusing. Instead of a mix of "supposed to pass and does", "supposed to fail and does", "supposed to pass but fails", and "supposed to fail but passes", now only the first two categories exist.

2. Broke up very long lines into <=79 columns, as much as I could. When learning how all this code works, readability was very important. Usually this meant breaking up compound conditionals and so forth into a line-per-condition. 

3. Fixed an issue with syntax highlighting for lines like:

  ```elixir
  use Foo.Bar
  ```

  Previously, the `.Bar` did not get colored correctly. [Now it does.](https://github.com/mattdeboard/emacs-elixir/commit/2600851cdfecd18d54f517b84385623ecc110d7c)

4. This one is probably the sloppiest transgression: I put @tomterl's [fix](https://github.com/mattdeboard/emacs-elixir/commit/414b06d54c73b9e26159ec238f9c482db68288f2) for #41 in here as well, and added tests to boot. This is the only one where I threw in a bug fix for its own sake. Sorry.

5. Fixed a deprecated keyword, changing `function` to `def` [here](https://github.com/mattdeboard/emacs-elixir/commit/d12d3b09155f5b28e4c1829ba4547465e7c98add). This was done while I was trying to get all the tests to get to a predictable state. A bug fix, but strictly in the interest of getting tests to pass with correct Elixir code in the test case.

There is a lot of change in here. Please let me know what I can do to help move the ball forward on this PR.

Thanks

Matt