Initial draft of bash-completion

- script generateBashCompletionRules that generates
  rules for bash completion. These are put into the
  module:

- ModelSEED::Bash::Completion::Rules, a module with
  rules for doing bash completion. This is read in
  by the bash completion plugin:

- Bash::Completion::Plugins::ModelSEED, a plugin
  that is initialized by the Bash::Completion stuff.

To use, add `source setup-bash-complete` to your
.bashrc or .bash_profile...

TODO :

- implement options that consume args, e.g. --with foo
- implement completion for arguments, e.g. ms list <TAB>
- more unit tests, figure out how to do this properly
Add source setup-bash-completion to bin/dev-env.sh

- Now get bash completion when you normally source
  the development enviornment.
Draft to support bash completion of references

- Now does completion of references that are found
  with `ms list biochemistry/` and other similar
  calls.

- Makes use of a new cache file "~/.modelseed_bash_completion_cache"
  which currently stays valid for 60 seconds. No active cache
  invalidation is done on this yet.

- Add new function to `ms list` command "arg_spec" which just
  defines a set of completion rules for arguments. Real documentation
  on this will be coming soon...

- Currently hitting tab on a "ready-to-complete" string will not
  insert the typical space afterwards. This was done to quickly support
  doing:

    ms list biochemis<TAB>
    ms list biochemistry/<TAB>
    ms list biochemistry/sdevoid/main

  But for cases where we **want** a space inserted, we need to handle
  that now...

TODO:

- improve ms list performance,
- get rid of or become happy with the file cache machanism
- implement "arg_spec" for functions where apropriate
- fix space issue
- mabye implement short "opt_spec" options, match with "-"...
- maybe offer "--" as a completion option to expose flags...
Clean up generateBashCompletionRules function

- Now actually prints out a file if you supply the path
- Has documentation, produces a file with POD!
Better comments for bash-completion driver
Fixing bug in biochemistry.
Fix Biochemistry bug

- args([], {}, [{}]) will not work. (Passing an ArrayRef containing
  a hash-ref is no good. Do args([], {}, {}) or args([], {}, @) where
  @ is an array of even length.
Merge pull request #82 from ModelSEED/bash-completion

Bash Completion for ModelSEED
fix biochemistry, second try
Fix ms import annotation --list option

The argument checking block was copied above the --list checking
block. @cshenry I'm guessing this was a copy-paste mistake?
Fix issues with ModelSEED::utilities

- Class::Autouse should not be used with ModelSEED::utilities, nor
  any other module that is not a Class.

- Fix calls to SETVERBOSE in commands.
Changes to Definitions.pm to get ready for the new linking system.
  - Changed 'uuid' attribute to 'uid'
  - Changed '*_uuid(s)' to '*_link(s)' for linking attributes
  - Changed type for 'uid' from 'ModelSEED::uuid' to 'ModelSEED::uid'
  - Changed high level (provenance) links to the type 'ModelSEED::provenance_link'
  - Changed subobject links to the type 'ModelSEED::subobject_link'
  - Fixed some indentation
  - Changed tabs to spaces

  * The syntax for the '_link' and the new types can be easily changed now,
the hard part was distinguishing the 'ModelSEED::uuid' types (ids,
subobject links, and provenance links).

  * This should not be merged until we are ready to make the switch
Few more changes to Definitions.pm to fix some issues.
Two new base class objects - ProvenanceObject.pm and Subobject.pm
Merge branch 'new-link-system' of github.com:ModelSEED/ModelSEED into new-link-system

Conflicts:
	lib/ModelSEED/MS/Metadata/Definitions.pm