calculation of attack_to and attack_from dicts

Refactored code and calculated attack_to and attack_from dictionaries.
Strange bug though when black pawn placed in a position where it should
capture in order to get a promotion. Code just crashes.
minor set-up change

Minor set-up change to avoid bug and so script will run through.
improved evaluation function

added position bonus for pieces