Refactor C API for more robust ABI

The C Interace was never really well defined or documented!

There is a very [long standing issue] [1] open for libsass to improve this.

- Hide all implementation details in the new C API defined in `sass_context.h`
- Split up `Sass_C_Function`, `Sass_Value` and `Sass_Context` in their own code files. This means we also have more (system) header files than before, but IMO that doesn't really matter.
- Added new API beside the old. Include `sass_interface.h` for the old; `sass_context.h` for the new 
- New API context structs "inherit" from each other (unfortunately I was not able to forward declare this inheritance without exposing the struct again, should be possible IMHO). But you can cast them down youself or use the accessor functions of the API (recommended).
- Removed automatic inclusion of `sass2scss.h`
- Added "load only once" guards inside the header files (why is this not done with all header files?)
- Normalized api struct names to camel case to match `Sass_Value` and `Sass_C_Function`
- Added typedefs for `Sass_C_Function_List` and `Sass_C_Function_Callback`

Added a [documentation wiki page] [2] to my local repo!

Since the introduction of autotools build we also can create a `libtool` system library!

There are also three other features implemented in this PR:

- Add json error reporting for new context api (#234)
- Implement generic function callback (register as `*`)
- Implement @warn overloading via custom function (register as `@warn`)
- Also contains a bugfix for #634

I know these should probably go in their own PR, but hadn't had time to do it.
If this is a problem I can remove the commits from this PR!

Since it is a pretty big change, I really would like to see some thumbs up before merging it!

[1]: https://github.com/sass/libsass/issues/79
[2]: https://github.com/mgreter/libsass/wiki/API-Documentation
Arguments extends Vectorized which overloads `<<`
On 10 Nov 2014 12:38, "Elliott Sales de Andrade" <notifications@github.com>
wrote:

> In eval.cpp:
>
> > @@ -381,8 +407,13 @@ namespace Sass {
> >      }
> >      // else if it's a user-defined c function
> >      else if (c_func) {
> > +      if (full_name != "*[f]") {
> > +        bind("function " + c->name(), params, args, ctx, &new_env, this);
> > +      } else {
> > +        String_Constant *str = new (ctx.mem) String_Constant(c->path(), c->position(), c->name());
> > +        *args << new (ctx.mem) Argument(c->path(), c->position(), str);
>
> Maybe I'm missing something, but I don't see the << being overloaded by
> the Arguments class. I *do* see << in Vectorized, but there's also +=.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/sass/libsass/pull/635/files#r20064005>.
>