environment: explicit non-const casts to fix warnings
environment: free func restriction strings

Free the function restriction strings when a function is removed or on
destruction of the environment. This fixes a potential memory leak (when
re-creating environments) and mutes valgrind.
value: do not store pointers in an int

Pointers for EXTERNAL_ADDRESS value types were stored in an int. This
does not work on x86_64. Rather than creating some wrapper on the heap
just store the pointer directly in the m_value field.
factory: properly compare types

Compare to the Type values that are returned, rather than the CLIPS-own
types. While they should have the same number, we should not mix them.
factory: improve support for external addresses

Fix handling of external addresses. The addresses were mangled and could
not be properly retrieved once stored (rather then retrieving the
address, the external address hash node's address was returned).
Add support for storing and retrieving external addresses to and from
multifield values.
factory: fix off-by-one bug in multifield indexing

Multifield functions take the index like within CLIPS, e.g. with 1
addressing the first element. But the code used 0-based indexing,
causing segfaults when the method was called.
factory: set data object begin and end values

When creating a multifield value the begin and end values must be set
for them to work properly. Otherwise methods like FactPutSlot could fail
with out-of-memory when trying to allocate billions of bytes.
fact: add support for creating new facts from a template

Allow for creating new (yet empty) facts from a template. The facts can
then be filled step by step. This is required, for example, to pass
external addresses to CLIPS.
fact: fix memory leaks in slot-related methods

The created CLIPS data objects were never deleted because a return
statement was executed before the deletion. Also, in case of an error
the memory was not freed.
fact: add comparison operators and refcount accessor

Added == operator for facts (two facts are the same if their index is
the same), and an accessor function for the reference count of a fact
(this can be used to query if a fact is no longer used within CLIPS,
i.e. if the refcount is 1 then the Fact instance is the only user of the
fact).
environment: add accessor for all facts in the environment

The new Environment::get_facts() method returns the first fact on the
fact list. Afterwards, Fact::next() can be used to iterate over all
facts in the environment.
environment: allow assertion from Fact instance

A new Fact instance can now be used to assert a fact in the environment.
environment/utility: support ext address as func args and rv

External addresses can now be used as parameters to external functions
as well as return values of such.
configure: set version to 0.3.0