Bug 9202: Add a MARC plugin for Template::Toolkit

A Template::Toolkit plugin which given a MARC::Record object parses it into a
hash that can be accessed directly in Template::Toolkit.

=== SYNOPSIS ===

[% USE record = MARC(mymarc) %] <!-- translate MARC::Record to T::T hash -->
<h1>[% record.f245.sa %]</h1> <!-- subfield 245$a -->
[% record.f245.all %] <!-- all subfields concatenated together -->
[% FOREACH link IN record.f856s %] <!-- process each 856 field -->
    <a href="whatever/[% link.su %]">[% link.sy %]</a> <!-- create a link on 856$y -->
[% END %] <!-- /FOREACH link IN record.856s -->
[% FOREACH contents IN record.f505s %] <!-- process each 505 field -->
    [% FOREACH subf IN contents.subfields %] <!-- process each subfield -->
        [% SWITCH subf.code %]
        [% CASE 'a' %]
            <span class='contents'>[% subf.value %]</span>
        [% CASE 't' %]
            <span class='title'>[% subf.value %]</span>
        [% CASE 'r' %]
            <span class='responsibility'>[% subf.value %]</span>
        [% END %]
    [% END %] <!-- /FOREACH contents.subfields -->
[% END %] <!-- /FOREACH contents IN record.f505s -->
[% FOREACH subj IN record.f6xxs %]
    <a href="whatever/[% subj.s9 %]">[% subj.sa %]</a> <!-- create a link on 6[0-9]{2}$a -->
[% END %]
[% FOREACH field IN record.fields %]
    [% SWITCH field.tag %]
    [% CASE '600' %]
        Subject: [% field.all %] is what we are all about
    [% CASE '700' %]
        Co-author: [% field.all %], I presume?
    [% END %]
[% END %]

=== ACCESSORS ===

By using some clever AUTOLOAD acrobatics, this plugin offers the user six
types of accessors.

==== Direct accessors ====

    [% record.f245.sa %]

    print $record->f245->sa;

By prefixing field numbers with an 'f' and subfield codes with an 's', the first
field/subfield with a given tag/code can be accessed.

==== Concatenated accessors ====

    [% record.f245.all %]

    print $record->f245->all;

A string consisting of all subfields concatenated together is accessible through
the all member of field objects.

==== Subfield iterators ====

    [% FOREACH subfield IN record.f245.subfields %]
        [% subfield.code %] = [% subfield.value %]
    [% END %]

    foreach my $subfield ($record->f245) {
        print $subfield->code, ' = ', $subfield->value;
    }

Subfield iterators are accessible through the subfields member of field objects.

==== Field iterators ====

    [% FOREACH field IN record.f500s %]
        [% field.all %]
    [% END %]

    foreach my $field ($record->f500s) {
        print $field->all;
    }

Field iterators are accessible by adding an 's' to the end of field names:
f500s, etc.

==== Section iterators ====

    [% FOREACH field IN record.f5xxs %]
        [% field.all %]
    [% END %]

    foreach my $field ($record->f5xxs) {
        print $field->all;
    }

All the fields in a section (identified by the first digit of the tag) can
be accessed with 'fNxxs' and then iterated through.

==== Complete field list ====

    [% FOREACH field IN record.fields %]
        [% field.all %]
    [% END %]

    foreach my $field ($record->fields) {
        print $field->all;
    }

All the fields in a record can be accessed via the fields object method.