Warning system (closes #1)

Implemented a warning system. The warnings are handled by the Warning
class in pysic.utility.error, and can be simply called using the
warn(message,level) method.

Warnings are printed simply by importing warn and then calling, e.g.:

    warn("Look here!",3)

The warning level is an integer between 1 (severe) and 5 (note), and
all warnings whose level is below the notification level (by default 3)
are printed. The notification level can be adjusted using
pysic.utility.error.set_warning_level(). Note that if the notification
level is 0, no warnings are printed, and if it is 6, any warning of
level 1-3 will result in an Exception being thrown in order to stop
execution.

The warning levels are:
1: a condition that leads to unwanted behaviour (e.g., creating
redundant potential in core)
2: a condition that is likely unwanted, but possibly a hack
3: a condition that is likely unwanted, but is a featured hack (e.g.,
bond order mixing)
4: a condition that is harmless but may lead to errors later (e.g.,
defining a potential without targets - often you'll specify the targets
later)
5: a condition that may call for attention (notes to user)
Bond order core bug fixes

Fixed some bugs in the core access functions for bond order factors.
Since the way bond parameters were grouped changed, some functions that
hadn't been updated to the new format could give Segmentation faults
due to errors in array indexing.