Initial commit

* Please note that until now, Invenio Client was being developed within
  the Invenio project main source code base.  See
  <http://invenio-software.org/> for more information.

  The subsequent 25 commits will import the full history of Invenio
  Connector from the Invenio sources code repository, so that past
  development can be easily tracked here.  (Note that past commits are
  not directly buildable out of the box here, as they require Invenio.)

  Afterwards a commit entitled "Initial package release" will turn
  intbitset into a fully usable standalone package.  The commit will
  bear similar message log to this one and will be dated November 2014
  as well.

Signed-off-by: Tibor Simko <tibor.simko@cern.ch>
MiscUtil: invenio-connector to remote installations

* Added a script to miscutils that connect to distant Invenio servers
  using Invenio APIs. It has several limitations (incl. no support for
  authentication, i.e. restricted records are not returned), but can
  be used at least as starting point to test running BibMatch with
  remote repositories.
InvenioConnector: use BatchUploader URL for uploads

* Moved from CERN-specific Webupload URL to more generic BatchUploader URL.
Miscutil: Document hack
kwalitee: adapt disable-msg to new pylint

* Changed all codebase to adapt enable-msg/disable-msg pylint comments
  to a new pylint version that leaves -msg part out.
global: CDS Invenio becomes Invenio

* Replace `CDS Invenio' by `Invenio', `cds-invenio' by `invenio', etc in all
  the codebase, establishing consistently separated naming scheme where
  `Invenio' denotes the software and `CDS' denotes the CERN Document Server
  instance of Invenio.

  (Beware when updating existing development sites, if you have been using
  master branch; e.g. the default installation location is now /opt/invenio,
  so if you would like to keep the old /opt/cds-invenio in place, please rerun
  configure with the appropriate prefix option.)

* Replace cds.support@cern.ch contact email address by
  info@invenio-software.org.
global: update copyright years
global: fix copyright notice years

* Every file has a copyright notice where the year information was sometimes
  invalid (starting always at 2002 instead of at the actual year when the
  concrete file started).  This commit fixes this pre-dating problem by
  deducing copyright years from the source code commit history.
  (closes #172)

* Note that this solution is not fully ideal either, because some files were
  renamed in the past -- especially when we have been using CVS and later
  CVS-to-Git migration --  therefore we may be missing out on some early
  2002-2003 years because we took only the current file name commit history
  into account in this fix.
global: fix ^H^H characters in copyright notices

* Remove ^H^H characters that appeared in copyright notices as a result
  of the previous commit (9036d847ae65a9287f64842d42e02f505749cbce).
  Thanks to Jay Luker for reporting the problem.
InvenioConnector: add search with retries

* Added method search_with_retry to InvenioConnector that will
  retry a search query a given amount of times.

* Search results returning something else then a list when using
  format "id" (i.e. "Search syntax misunderstood..") are now
  dealt with properly.
BibMatch: convert to simple search method

* BibMatch now defaults to simple search method instead of
  advanced search (fixes #255):

  ** -q, --query-string option now expects an Invenio search
     query or a query-template, it is also backwards compatible
     with old-style querystrings.

  ** When -m, --mode is specified the search will fall
     back to advanced search in given mode, like before.

  ** All queries are now performed with retries, as introduced
     in invenio_connector.

  ** Added support for cases where several datafields of the
     same type exists in the records. The different values
     for each field will generate unique search queries
     using the Cartesian product of all the values in the
     query.

  ** Introduced the concept of "query-completeness" which
     indicates if all fields specified in matching query can
     exists in input records. If a particular field cannot
     be found, the match is deemed "incomplete", which will
     result in a fuzzy/ambiguous/non match regardless.

  ** Fuzzy matching has been extended to perform set
     intersection of results for every field specified in
     matching query. Various options for the fuzzy matching
     can be tweaked in invenio.conf.

  ** If number of search results exceed 10 it will be
     treated as a non-match.

  ** Added option to sanitize final queries WRT double quotes.

  ** The Querystring class have been completely revamped to
     conform with these new changes.

* Batch output files suffixes are now named instead of numbered
  (i.e. filename.matched instead of filename.0).

* invenio.conf has been populated with various configuration
  options to BibMatch. These options are mostly related to fuzzy
  matching, but query-templates are also maintained there.

* Updated regression tests and documentation.

* Several other minor additions and fixes.
BibMatch: match specific collections

* You can now specify certain collections to match against, using
  parameter -x, --collection. However, restricted collections are
  still not matched. (addresses #218)

* InvenioConnector now correctly sends 'c' collection parameter as
  a sequence or None to perform_request_search and url requests.

* Updated documentation and added new regression test.
global: /record configurable via CFG_SITE_RECORD

* Creates config option CFG_SITE_RECORD that represents '/record' part
  of detailed record pages URI, so that Invenio sites can set this
  natively to have some other value such as '/abs' in place of `/record'.

* Changes all files that reference hardcoded /record in order to use
  CFG_SITE_RECORD.  (Web tests weren't changed.)
plotextractor: fix failing unit test

* The test 'get_defaults' is fixed and placed in its proper place
  in plotextractor regression tests. (fixes #637)

* Improves handling of old-style arXiv names in
  plotextractor_getter.

* Fixes an issue in a recent change of InvenioConnector
  causing remote queries to fail.

* Adds regression tests for invenio_connector.py.
MiscUtil: authenticated InvenioConnector

* Add support for authentication in InvenioConnector. (closes #586)

* New class CDSInvenioConnector that support authentication to the
  SSO-based CERN Document Server.
BibMatch: match restricted collections

* Matching both local and remote restricted collections is now
  possible by specifying user credentials from command-line.
  (fixes #218)

* Fixes an error while using InvenioConnector's authentication
  methods against standard Invenio instances, and added check
  to ensure a more secure connection using HTTPS.

* Updates applicable regression tests.
InvenioConnector: improve local site check
InvenioConnector: use Invenio user agent

* When uploading files using BatchUploader, use the user agent
  "invenio_webupload" in order to work with default Invenio
  settings of CFG_BATCHUPLOADER_WEB_ROBOT_AGENT.
InvenioConnector: make emulator modules optional

* Makes the Python modules Mechanize and ClientForm optional
  when importing invenio_connector. (fixes #781)
InvenioConnector: improve search parameters

* InvenioConnector search() function will now accept any parameter
  given to the search API, using variable length keyword-arguments
  instead of tightly coupled parameters.

* Fixes an issue where InvenioConnector would fail to search when
  not given a specific URL on instantiation. Adds a custom exception
  for the same case when running on a non-Invenio machine.