Heavy modifications on Fermi level calculation.
1. The approximate solution is now calculated first (using Newton's method). If error is too high, precise solution is returned instead.
2. The algorithm for precise solution is fixed and now searches for roots of quartic polynomial.
3. QuarticPolynomial class has been added.
4. FermiLevel class now has method getExp(params, T), which returns exp(-mu/(k*T)).