Some improvements in planner.
Add representation of block colors
Fixed spatial relation predicate updater, and add the predicates in real-time.
Add both links with both order for spatial predicates . e.g., if A
near B, add both A near B link and B near A link .
replace blocklist in a blockentity as each eval link "part-of" for each block in a blockentity.
Fixed robot's size == 0 bug
And added spatial predicates for both order of the two objects in a relation: (A to B)&(B to A)
Clean the feature selection within moses code

* Replace conditional macro by user options
* Add missing options in moses command line
* Move body of selector in feature_selector.cc
Add visitor to initialize value in multi_type_seq

It a visitor to set a value of a certain position of multi_type_seq to
its default value (0 for contin_t, "" for string, etc).
Implement --fs-ignore-exemplar-features user option
Add exemplar feature as input feature for feature selection within moses

Add option to consider the output of the exemplar as a feature
itself. That way we ask feature selection to find features which score
well combined with that exemplar feature.
Add option to subsample the table before feature selection

Not all feature selection algorithms have randomness. In order to add
some randomness to feature selection we offer the option to randomly
subsample the dataset.
Add exemplar feature as initial feature
Add option to load combo program from file
Improve program option help
Minor fix in debug logging message
Set all methods of bscore_base virtual

bscore_base::min_improv() and bscore_base::set_complexity_coef() need
to be virtual, otherwise if an inherited instance is referenced by a
pointer of type bscore_base the non-virtual methods of that base are
called instead of the inherited instance.

Frankly it still astonishes me that after 10 years of C++ experimence
I can still be confused... But the following experiment set it
clearly, look at this code

#include <iostream>

struct A {
    void truc() const { std::cout << "A" << std::endl; }
};

struct B : public A {
    void truc() const { std::cout << "B" << std::endl; }
};

int main() {
    B b;
    const A& a(b);

    a.truc();
    b.truc();
}

It outputs

A
B

So const A& a(b) has changed the method B::truc to A::truc.

But if I put virtual in front of the declaration of A::truc then it
works, the output is

B
B
Subtract minimum significant improvement from target_score

I found some cases when the max score termination condition isn't met
due to errors in the floating representation, so before being passed
to opt_params and moses_params the target_score is being subtracted
with c_scorer.min_improv().
Fix logger message
Improve logging message
Fix bug in setting exemplar feature