[WIP] DSSP secondary structure assignments

cc #447 and #399

(1) change kabsch_sander to not overload the semantics of the ca_indices array with -1s in the place of prolines.
(2) don't use _mm_rsqrt_ps. it wasn't accurate enough to pass the tests for DRID, so it's probably not a good choice here.
(3) small fix in proline handing in kabsch_sander.

todo:
- [x] deal with residues which don't contain the required atoms (ca/n/c/o). this includes solvent, and chain termi
- [x] lots more tests. particularly multi-chain and weird residues (i.e. above)
- [x] add comments
- [x] add license info, and references to Maarten's work
- [x] figue out msvc compilation issues
So it could be a 2D array with `dtype=S1`. Or  a 1D array containing longer strings.

```
In [37]: np.array([['H', 'H', 'H'], ['E', 'E', 'E']])
Out[37]: 
array([['H', 'H', 'H'],
       ['E', 'E', 'E']], 
      dtype='|S1')
```