Added limited general-basis and ECP

This adds two things:

1) You can supply a general basis (i.e. each element has a different basis set) as long as it's specified in `basdict`.  The keys in `basdict` are custom basis names (not recognized by Q-Chem), and the values are dictionaries mapping each atomic number to its basis name.

When the Q-Chem input file is written, it will contain the following (for example):

```
$rem
...
basis gen
...
$end

$basis
H
6-31g*
****
C
6-31g*
****
Fe
lanl2dz
****
$end
```

This does not implement "mixed" basis where different atoms with the same atomic number can have different basis sets.  I think that would be more complicated, requiring the user to specify which atom numbers get which basis functions when the object is created.

2) Effective core potentials, if any, are automatically determined from the basis name.  General ECPs follow the same syntax.

In the future, this could support `aux_basis` (density-fitting basis set for RI-MP2) and `basis2` (for basis set projection and dual basis method), so we could have heavy-aug-cc-pVDZ (H = cc-pVDZ, all others = aug-cc-pVDZ) for MP2 calculations for example.