Removes style 'preamble'

The way that style files used to be built up was quite impractical: It
(a) made an unintuitive 'preamble' necessary (class MyStyle < Style ...
    end) and
(b) made it necessary to have a certain filename-classname relation with
    complicated camelising and whatnot. For instance, teststyle.rb had
    to contain the class Teststyle but not TestStyle.

Therefore, the 'preamble' was dropped in favour of a more elegant
solution. RCite will now dynamically create Style subclasses and load
the code from style files into them so that the Style itself doesn't
need to specify a class any more.

changes user API: Processor#load_style, style file syntax
closes #15
Dynamic access to BibTeX fields in RCite::Style

RCite::Style previously had a hard-coded list of BibTeX fields that
were accessible via methods (like `author` and `title`). This had
the obvious drawback that commonly used non-standard fields like
`url` or `shorttitle` had to be added via the cumbersome
`@text[:FIELDNAME]`.

Therefore, Style now uses `method_missing` to handle fields.
Every call to a method that is not defined is now interpreted
as a BibTeX field name and `method_missing` will attempt to
extract the corresponding value from `@text`.

The StyleGuide was modified accordingly.

closes #9
Features for preprocessor command

The features in this command define what the 'rcite process'
command should do.
Changes to RCite core classes

In order to enable a feature of the preprocessing command
-- changing BibTeX fields 'on the fly' --, changes had to be
made to various RCite core classes. All the `#cite` and
`#bib` methods now support an additional hash that contains
BibTeX field-value pairs.

changes user api: Processor#cite, Processor#bib
Adds RCite::TextProcessor

The TextProcessor serves as a high-level interface for
(pre)processing text and files. It can parse arbitrary text,
isolate preprocessor commands and replace them with corresponding
citations/bibliography entries.

adds to user api: TextProcessor::DEFAULT_PREPROCESSING_REGEXP,
                  TextProcessor::COMMAND_SYNTAX_REGEXP,
                  TextProcessor#process_file,
                  TextProcessor#process_text
Adds 'process' command

The 'rcite process' command, represented by
RCite::CLI::ProcessCommand, serves as a user interface to the
RCite::TextProcessor.

closes #17
closes #1
Commands now return instad of display

In order to unify command behaviour and facilitate testing,
all commands now return their results instead of displaying
them via `puts`. This is now done by RCite::CLI::Main#run.
Adds documentation for the preprocessing feature

This commit adds the new ProcessingGuide that mostly
explains the syntax of preprocessing commands, as well
as some brief information in the README.
Replaces all seperators by separators

... so as to wipe this testament of my bad English from the
face of the earth.
Little changes to the Rakefile

1. Adds a `test` task that runs both rspec and Cucumber.
2. Changes Cucumber format from 'pretty' to 'progress'.
3. Adds TODO to debug task.

The READMEs have been updated, mainly to reflect the new `test` task.
Adds features for multiciting and the bibliography

Multiciting (which can actually be multibib'ing as well)
stands for the concept of citing/bib'ing multiple texts
with one command in preprocessing mode.

In addition to that, a new command called 'bibliography'
will be added to the preprocessing mode. This command
will automatically create a bibliography from all the
texts that were cited in the file.
Implements multicite feature

In preprocessing mode, RCite now supports generating multiple
citations/bibliography entries with one command. In addition,
various custom separators can be placed between each
citation/bibliography entry as well as around each or all of
them.

closes #20
Adds page numbers with whitespace

In preprocessing mode, RCite now also accepts page numbers (or rather
things that serve the same purpose as page numbers) with whitespace,
like '§ 256'.
Fixes bug with additional fields

Because of a bug in Style#cite and Style#bib, additional fields set via
preprocessing commands (like %%cite stuff title: newtitle%%) would
persist for the rest of the file. I.e., all citations and bibliography
entries generated after the example would have 'newtitle' as title. This
error was fixed.
Fixes style loading (again)

Methods defined in style files used to be global, which was unpractical.
Should now be limited to the class they are defined in.

Random Cucumber poetry:
  Given that I have no idea of Ruby metaprogramming
  When  I attempt to implement something
  Then  it fails
Implements basic bibliography feature

Users may now generate a bibliography in preprocessing mode using the
command %%bibliography%%. It will automatically generate a list
of bibliography entries for all texts that have been cited with
the %%cite%% command.
Improves cmd regexp readability and functionality

Splits the giant regular expression that describes preprocessing command
syntax into small pieces that are much more readable. Also extends its
functionality by allowing masked quotation marks in strings ("\"").

To accomplish this, some restructuring of the TextProcessor class was
necessary.

Changes user api: strings in preprocessing command must now be enclosed
in quotation marks instead of single quotation marks.
Preparations for new option interface

The new Option class will be the main component of a new option
management system. Currently, there is an unfortunate tension
between the `defaults` hash that controls the generation of
the author/editor list and the new `around`/`between` methods
that reside in the style preamble. These two 'solutions' will hence be
replaced by a unified option management.
Updates features for new option management

The notation of options will become a bit more readable with the new
system. The features have been updated to reflect this.
Implements new options interface

The new options management system is now up and running and has totally
replaced the old systems. Consequently, lots of changes...

Changes user api: preamble options as well as defaults hash options have
been replaced.